【问题标题】:Filtering an array for only unique values [duplicate]仅针对唯一值过滤数组[重复]
【发布时间】:2021-10-06 08:53:55
【问题描述】:

例如,如果arr = [1,1,2,3,5,5] 这将返回[1,2,3,5]

function returnUnique(arr) {
      
      let unique = [...new Set(arr)];
      return unique;
    };

我的目标是只返回 2,3

【问题讨论】:

    标签: javascript filter


    【解决方案1】:

    function returnUnique(arr) {
      return arr.filter(e => arr.indexOf(e) === arr.lastIndexOf(e));
    }
    
    console.log( returnUnique([1,1,2,3,5,5]) );

    【讨论】:

    • 他只是想将一个数组转换为一个集合,这是一个回答了好几次的问题
    • @AlbertoSinigaglia 不,他完全按照要求回答了这个问题。
    【解决方案2】:

    您可以使用Map轻松实现结果

    const arr = [1, 1, 2, 3, 5, 5];
    
    const map = new Map();
    arr.forEach((n) => map.set(n, (map.get(n) ?? 0) + 1));
    
    const result = [];
    for (let [k, v] of map) {
      if (v === 1) result.push(k);
    }
    
    console.log(result);

    【讨论】:

      【解决方案3】:

      使用reduce函数,例如:

      const array = [1, 1, 1, 2, 3, 3, 4, 5, 6, 6, 6];
      
      const uniqueValues = (array) => array.reduce((arr, item) => {
      if (!arr.some((filteredItem) =>
              JSON.stringify(filteredItem) === JSON.stringify(item)
          ))
          arr.push(item);
      return arr;
      }, []);
      console.log(uniqueValues(array))

      【讨论】:

        猜你喜欢
        • 2017-09-08
        • 2016-11-07
        • 1970-01-01
        • 2021-09-08
        • 1970-01-01
        • 2022-01-14
        • 1970-01-01
        • 2017-04-12
        • 1970-01-01
        相关资源
        最近更新 更多