- 第一种情况 对象键值对顺序不变
var arr=[{"appId":"1","appName":"小君"},
{"appId":"2","appName":"小花"}
]
var obj={"appId":"2","appName":"小花"}
if(JSON.stringify(arr).indexOf(JSON.stringify(obj)) === -1){
console.log('不存在')
arr.push(obj)
}else{
console.log('已存在')
}
以上情况能正常运行
一旦出现以下情况,判断就不可控
```javascript
var obj={"appName":"小花","appId":"2"}
- 第二种情况 对象键值对顺序改变
var arr=[{"appId":"1","appName":"小君"},
{"appId":"2","appName":"小花"}
]
var obj={"appName":"小花","appId":"2"}
if(JSON.stringify(arr).includes(JSON.stringify(obj)) === -1){
console.log('不存在')
arr.push(obj)
}else{
console.log('已存在')
}
-
总结
很多情况下,我们在判断一个数组中是否存在某个是,我们用indexOf就行。包括在判断有序的对象数组中是否存在某个对象。一旦参考对象的顺序打乱,我们就得使用 includes -
项目实例
if (isAdd) {
//判断添加的参评人 排好序的参评人数组中也要相对于的添加 push到数组最后
for (let i = 0; i < cpr_arr_selected.length; i++) {
if (JSON.stringify(cpr_arr_order).indexOf(JSON.stringify(cpr_arr_selected[i])) === -1) {
// console.log('不存在')
/* console.log("新增了");
console.log(cpr_arr_selected[i]);*/
cpr_arr_order.push(cpr_arr_selected[i]);
} else {
// console.log('已存在')
}
}
cpr_arr = cpr_arr_order;
}