如何从数组中获取唯一值,另一个视角? [重复]

问题描述 投票:-2回答:3

这个问题在这里已有答案:

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

我尝试了新的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
3个回答
2
投票

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

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

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


1
投票

简明扼要的是将该逻辑放在另一个函数中。

function unique(value, index, self) { 
    return self.indexOf(value) === index;
}

return Object.keys(list).map(key => list[key].idDealer).filter(unique)

1
投票

我使用以下功能。优点是它可以处理任何可以进行字符串化的数组。

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 );
© www.soinside.com 2019 - 2024. All rights reserved.