📅  最后修改于: 2023-12-03 14:54:39.282000             🧑  作者: Mango
在开发过程中,我们经常需要从数组或对象中删除重复项。这里将介绍一种按照对象ID删除重复项的方法。
我们可以通过遍历数组或对象中的每个元素,然后将元素ID存储在一个新对象中,如果该ID已经存在于新对象中,则删除该元素。
function removeDuplicatesById(arr) {
var uniqueObject = {};
for (var i = 0; i < arr.length; i++) {
var id = arr[i].id;
if (!uniqueObject[id]) {
uniqueObject[id] = true;
} else {
arr.splice(i, 1);
i--;
}
}
return arr;
}
此函数的参数是一个数组,该数组包含多个对象。此函数遍历输入数组中的每个元素,并将元素ID存储在“uniqueObject”对象中。如果该ID不存在于“uniqueObject”对象中,则将其添加到对象中。否则,它将使用Array的splice方法从输入数组中删除该元素。
让我们来看一个示例,假设输入数组如下:
var data = [
{ id: 1, name: "Apple", price: 1.15 },
{ id: 2, name: "Orange", price: 0.75 },
{ id: 3, name: "Banana", price: 0.80 },
{ id: 1, name: "Apple", price: 1.15 },
{ id: 4, name: "Grape", price: 2.50 },
{ id: 2, name: "Orange", price: 0.75 }
];
执行“removeDuplicatesById”函数后,输出数组将如下所示:
[
{ id: 1, name: "Apple", price: 1.15 },
{ id: 2, name: "Orange", price: 0.75 },
{ id: 3, name: "Banana", price: 0.80 },
{ id: 4, name: "Grape", price: 2.50 }
]
通过使用上面的方法,我们可以轻松地从数组或对象中删除重复项。这种方法仅参考元素的ID,并且需要保证ID是唯一的。如果元素具有多个属性,则可以修改此方法以参考其他属性。