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