【问题标题】:How to get unique values from array, another perspective? [duplicate]如何从数组中获取唯一值,另一个角度? [复制]
【发布时间】:2019-01-14 15:35:25
【问题描述】:

我正在使用filteredArray 来获取我的数组的唯一值。有没有更简洁的方法来做到这一点?我对它的方式完全满意,但只是想要更多的观点。

我尝试了 new Set(.. 但它把数字作为字符串返回给我,这不是我需要的。但是,我执行错误之类的。

function myFunction2() {
    const toReturn = Object.keys(list).map(key => list[key].idDealer);

    var filteredArray = toReturn.filter(function(item, pos){
        return toReturn.indexOf(item)== pos; 
      });

    return filteredArray;
}

【问题讨论】:

  • 请分享输入和输出。

标签: javascript


【解决方案1】:

使用 ES6 语法我认为它会更清晰

array = array.filter((item, index, array) => array.indexOf(item) == index)

item是数组中的item,index是item的索引,array是数组引用

【讨论】:

    【解决方案2】:

    简洁的方法是将逻辑放在另一个函数中。

    function unique(value, index, self) { 
        return self.indexOf(value) === index;
    }
    
    return Object.keys(list).map(key => list[key].idDealer).filter(unique)
    

    【讨论】:

      【解决方案3】:

      我使用以下功能。优点是它适用于任何可以字符串化的数组。

      const unique = () => {
          const seen = {};
          return item => {
              const json = JSON.stringify( item );
              return seen.hasOwnProperty( json )
                  ? false
                  : ( seen[ json ] = true );
          };
      };
      
      const data = [
        { value: 'unique' },
        { value: 'not unique' },
        { value: 'not unique' }
      ];
      
      const filtered = data.filter( unique() );
      
      console.log( filtered );

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-21
        • 2013-04-01
        • 2011-03-31
        • 1970-01-01
        相关资源
        最近更新 更多