js数组对象push前怎么判断是否存在该元素

我用forEach是不是list长度0的时候它不执行 ,那我for为什么还是不行

list=[
    {
        id:1,
        name:'a'
    },
    {
        id:2,
        name:'b'
    }
]


push(action){
    list.forEach(i => {
         if (i.code !== action.code) {
             list.push(action);
         }
    })
 }

push(action){
    for (var i = 0; i < list.length; i++) {
        if (list[i].code !== action.code) {
            list.push(action);
        }
    }
 }
阅读 7.8k
3 个回答
var list = [{
  id: 1,
  name: 'a'
}, {
  id: 2,
  name: 'b'
}];

var action = {
  id: 1,
  name: 'a'
};

var isExist = false; // action是否存在,默认为不存在 false
for (var i = 0; i < list.length; i++) {
  if (list[i].id === action.id) {
    isExist = true;
    break;
  }
}

!isExist && list.push(action); // 当action不存在才执行push
console.log(list);

push(action){

for (var i = 0; i < list.length; i++) {
    if (list[i].code == action.code) {
       return;
    }
}
list.push(action);

}

问题在于你数据为0的时候for循环压根就不会执行...所以for出来的东西只能作为你一个判断条件...而不是在push写在for里...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏