一般删除数组中的某个对象或元素,我们会用到splice,如:
const arr = [1, 2, 3, 4, 5]
arr.splice(0, 1) // [2, 3, 4, 5]
如果要删除某个指定的对象或元素,如,删除3:
const arr = [1, 2, 3, 4, 5]
arr.splice(arr.findIndex(item => item === 3), 1) // [1, 2, 4, 5]
但是,如果要循环删除数组里的某个对象要如何操作呢?如下数组:
const arr = [
{ name: '北京' },
{ name: '北京' },
{ name: '上海' },
{ name: '广州' },
{ name: '深圳' }
]
方法一:Set
const uniqueArr = [...new Set(arr.map(JSON.stringify))].map(JSON.parse);
console.log(uniqueArray);
方法二:filter
let uniqueArray = arr.filter((obj, index, self) =>
index === self.findIndex((o) =>
o.name === obj.name
)
);
console.log(uniqueArray);
注意:
第一种方法使用了JSON.stringify和JSON.parse,这适用于对象中只包含基本数据类型(如字符串、数字、布尔值等)的情况。如果对象中包含其他对象或函数,这种方法可能不起作用。
第二种方法需要你指定一个属性(yourProperty)来比较对象的唯一性。你需要根据你的对象结构选择一个合适的属性来比较。