JS 对象的新手,我只需要有人向我解释,为什么在true从数组中添加重复值时对象属性会变成。下面是我使用forEach()orreduce()方法删除重复项的示例。对undefined我来说很有意义。只有true's,我还不明白。
const names = ['James','John', 'James','Bob','John','Steve', 'James']
let unique = {};
names.forEach(el => {
console.log(unique[el])
if (!unique[el]) unique[el] = true;
});
console.log result inside forEach():
/*
unique['James'] = undefined
unique['John'] = undefined
unique['James'] = true
unique['Bob'] = undefined
unique['James'] = true
unique['Steve'] = undefined
unique['James'] = true
*/
console.log(Object.keys(unique)); // [ 'James', 'John', 'Bob', 'Steve' ]
使用reduce()方法相同:
Object.keys(names.reduce((a,v) => {
if(!a[v]) a[v] = true;
return a;
},{}))
// [ 'James', 'John', 'Bob', 'Steve' ]