【0,1,2,3,4,5】,4和0 id相同我需要4替换0并删除4,【0,1,2,3,4】,5变为4
const temp = [
{
id: 0,
value: 1
},
{
id: 1,
value: 2
},
{
id: 2,
value: 3
},
{
id: 0,
value: 4
},
{
id: 4,
value: 5
}
];
const deleteDuplicate = (arr) => {
const idToIndexMap = new Map();
const ans = [];
const swap = (i, j, arr) => {
const temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
};
for (let i = 0; i < arr.length; ++i) {
if (!idToIndexMap.has(arr[i].id)) {
ans.push(arr[i]);
idToIndexMap.set(arr[i].id, ans.length - 1);
} else {
const duplicateIdIndex = idToIndexMap.get(arr[i].id);
ans.push(arr[i]);
swap(ans.length - 1, duplicateIdIndex, ans);
ans.pop();
}
}
return ans;
};
console.log(deleteDuplicate(temp));
for(let i = 0; i < arr.length; i++){
let index = arr.findIndex(item => item.id === arr[i].id)
if(index < i){
arr.splice(index, 1, arr[i])
arr.splice(i--, 1)
}
}
13 回答12.8k 阅读
8 回答2.6k 阅读
2 回答5.1k 阅读✓ 已解决
7 回答1.9k 阅读
3 回答2.2k 阅读✓ 已解决
5 回答848 阅读
3 回答1.1k 阅读✓ 已解决
以前太菜了,现在更新下答案:
这样更清晰明了: