数组去重问题?-灵析社区

光光哥乌昂

实现数组去重并对重复的元素进行标记,如果重复 "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 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 } ]

阅读量:17

点赞量:0

问AI
""array.some"方法" (https://link.segmentfault.com/?enc=wpWUmd1jdXyZ%2FSRZSxO0Ng%3D%3D.XhrinNv7NQnBgVDbm4CEhWuILZOdoP1ytCnOxWXVM%2FkHN1glOyg%2FCPlaywpO3awY5Hb9p1pCUJkWxoK%2BauSaI2R64G6cjwdjX15wDRiyJxvretQTbHjVX%2FJV8VGgpQLG)只要数组内容有一个返回为true,它就会返回true,你这块的判断有问题。 如果是我的话,我会这样写: const arr = [ "11", "22","11","22","11","22","66"] function norepeat(arr) { const result = []; arr.forEach(i=>{ const curResItem = result.find(r=>r.value===i); if (curResItem) { curResItem.isRepeat = true; } else { result.push({ value: i, isRepeat: false, }); } }) return result; } const res = norepeat(arr);