<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>删除同一个数组中所有的相同对象(不是去重)</title>
</head>
<body>
</body>
<script type="text/javascript">
let arr = [{
name: "张三",
id: "1"
},
{
name: "李四",
id: "2"
},
{
name: "李四",
id: "2"
},
{
name: "小兰",
id: "3"
},
{
name: "张三",
id: "1"
},
{
name: "张三",
id: "1"
}
]
let list = fun(arr);
console.log(list, "结果")
function fun(arr) {
let newArr = [...arr];
let indexArr = [];
arr.forEach((s, i) => {
let count = 0;
newArr.forEach((m, j) => {
if (arr[i].name == newArr[j].name && arr[i].id == newArr[j].id) { //当属性值都相同时,打印索引位置
count++;
}
})
// console.log("索引:",i,"相同次数:",count)
if (count > 1) { //内层循环结束,当count>1,说明此索引为对象是重复的
indexArr.push(i);
}
})
// console.log(indexArr) //相同对象索引数组
let flag = -1;
for (var i = 0; i < indexArr.length; i++) { //删除一次,索引位
flag++;
if (flag == 0) {
newArr.splice(indexArr[i], 1);
} else {
newArr.splice(indexArr[i] - flag, 1); // 每次删除,需要删除的索引位就要减去1
}
}
return newArr;
}
</script>
</html>