从另一个角度来看,如何从数组中获取唯一值?

时间:2018-08-07 13:56:02

标签: javascript

我正在使用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;
}

3 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

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

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

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

答案 2 :(得分: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 );