<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<script>
//slice = 1 优先取为1的,slice只有0的就取为0的
let arr = [{
id: 0,
slice: 1
}, {
id: 0,
slice: 0
}, {
id: 3,
slice: 0
}, {
id: 3,
slice: 1
},{
id: 4,
slice: 0
}, {
id: 4,
slice: 1
}, {
id: 8,
slice: 0
}, {
id: 11,
slice: 1
}, {
id: 10,
slice: 0
},{
id: 13,
slice: 1
}, {
id: 29,
slice: 1
}],
arr1 = new Set(),
arr2 = [],
arr3 = []
// 去重slice 0和1都存在,但是去重了
arr.filter(i => {
arr1.add(i.id);
})
for (var i of arr1) {
for (var p in arr) {
// 去重之后arr1中id相等arr中找到slice等于1的放到二中
if (arr[p].id == i && arr[p].slice == 1) {
arr2.push(arr[p])
break
// 去重之后arr1中id相等arr中找到slice等于0的放到二中
}else if(arr[p].id == i){
arr3.push(arr[p])
}
}
}
// 删除有1又有0的的零的部分,保留没有1只有零的部分
arr2.filter(i => {
for ( var j in arr3){
if(arr3[j].id == i.id){
arr3.splice(j,1)
}
}
})
// arr3就是只存在零的部分
console.log("arr3",arr3);
// 将优先取1的部分和只有0的部分合并
arr2.push(...arr3)
console.log('arr2',arr2)
</script>
</body>
</html>