今天在小程序开发的过程中遇到一个很大的问题,就是判断获取的用户数据。这里标为一个对象。需要判断该对象是否存在 一个members中的。这里的members包含多个用户的完整数据。翻遍全网。终于找到了。将次经验分享给大家。
第一种情况 对象键值对顺序不变
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('已存在')
}
以上情况能正常运行
一旦出现以下情况,判断就不可控
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)) === false){
console.log('不存在')
arr.push(obj)
}else{
console.log('已存在')
}
总结
很多情况下,我们在判断一个数组中是否存在某个是,我们用indexOf就行。包括在判断有序的对象数组中是否存在某个对象。一旦参考对象的顺序打乱,我们就得使用 includes