这个问题在这里已有答案:
我正在使用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;
}
使用ES6语法我认为它会更清晰
array = array.filter((item, index, array) => array.indexOf(item) == index)
item指的是数组中的项,index指的是item的索引,array是数组的引用
简明扼要的是将该逻辑放在另一个函数中。
function unique(value, index, self) {
return self.indexOf(value) === index;
}
return Object.keys(list).map(key => list[key].idDealer).filter(unique)
我使用以下功能。优点是它可以处理任何可以进行字符串化的数组。
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 );