如果要判断数组中是否存在某个元素的话很好判断
直接用数组的indexOf方法就好,存在返回当前索引不存在返回-1
var arr=[1,2,3,4]
arr.indexOf(3) // 2
arr.indexOf(5) // -1
也可以通过判断该元素在数组中的下标,如果没有该元素的话 ,值为-1,:
let index = arr.findIndex(v=>v==4);
console.log(index)//如果值为-1表示数组中不存在该元素 否则存在该元素
查看数组中是否存在某个对象
let good_obj = {
id:1,
name:"电视机"
}
let collect = [{
id:1,
name:"电视机"
},
{
id:2,
name:"冰箱"
}]
第一种方式:定义一个变量 假设不存在
let isCollect;
collect.forEach(item=>{
if(item.id===good_obj.id){
// 说明已知数组中存在该对象
isCollect = true;
}else{
// 说明不存在
isCollect = false;
}
}
)
但是我们通常是需要动态的修改数组(删除或者添加对象),所以需要知道下标 第二种方式:
let obj_index = collect.findIndex(v=>v.id===good_obj.id);
console.log(obj_index)//如果该值为-1的话 说明已知数组中不存在该对象
// 然后根据obj_index的值是否为-1 决定是添加该对象到数组中还是根据下标删除该对象
if(obj_index==-1){
// 该商品未被收藏过
collect.push(good_obj)
}else{
collect.splice(obj_index,1)
}
console.log(collect)
网友评论