实现数组去重并对重复的元素进行标记,如果重复 "isRepeat": true",否则为 "isRepeat": false"
但是函数实际输出的元素都标记为 "isRepeat": true"
let arr=[ "11", "22","11","22","11","22","66"]
norepeat(arr) {
console.log('arr',arr)
const uniqueArr = [...new Set(arr)]
const result = []
const tempArr = []
for (let i = 0; i < arr.length; i++) {
if (arr.find(item => item === uniqueArr[i] )) {
tempArr.push(uniqueArr[i])
if(uniqueArr.some(item => item === tempArr[i])){
result.push({ value: uniqueArr[i], isPublic: true });
}else {
result.push({ value: uniqueArr[i], isPublic: false });
}
}
}
return result
}
//期望
[
{
"value": "11",
"isPublic": true
},
{
"value": "22",
"isPublic": true
},
{
"value": "66",
"isPublic": false
}
]
//实际
[
{
"value": "11",
"isPublic": true
},
{
"value": "22",
"isPublic": true
},
{
"value": "66",
"isPublic": true
}
]
array.some
方法只要数组内容有一个返回为true,它就会返回true,你这块的判断有问题。如果是我的话,我会这样写: