根据id查找到对象数组里面的对象,然后移除该对象
array 是定义的数组
var ary = [{id:1,name:"b"},{id:2,name:"b"}]; for (var i = 0;i < ary.length; i++){ if (ary[i].id==2){ ary.splice(i,1); } } console.log(ary);
js根据数组对象属性删除里面的指定对象
1、原数组
let list = [ {type:"aaaaaa", name:'张三'}, {type:"bbbbbb", name:'李四'}, {type:"cccccc", name:'王五'} ];
2、错误方法(网上大部分都是这种错误的代码)
function removeByValue(arr, attr, value) { let index = 0; for (let i in arr) { if (arr[i][attr] === value) { index = i; break; } } arr.splice(index, 1); } removeByValue(list,"type","aaaaaa"); console.log(list);
上面网上大部分的代码,但是这个是有问题的,有很大的问题,我们的需求是,在已有的数组中,根据指定对象的属性值,删除这个指定对象,问题来了,每一次操作,都删除了一个下标的对象,不管它是否存在,都会把一个下标的对象删除。
3、正确的写法:
function removeByValue(arr, attr, value) { let index = 0; let flag = false; for (let i in arr) { if (arr[i][attr] === value) { index = i; flag = true break; } else { flag = false } } if (flag) { arr.splice(index, 1); } }