我在javascript中有这个对象数组。
var array = [ { DATA_ID: 1,
DATA_NAME: 'XX',
DATA_GROUP: 2313,
CODE_NO: 1 },
{ DATA_ID: 6,
DATA_NAME: 'YY',
DATA_GROUP: 4213,
CODE_NO: 2 },
{ DATA_ID: 4,
DATA_NAME: 'ZZ',
DATA_GROUP: 2123,
CODE_NO: 3 },
{ DATA_ID: 8,
DATA_NAME: 'ZZ',
DATA_GROUP: 2123,
CODE_NO: 3 } ]
我想在属性CODE_NO === 3。
时从对象数组中删除对象结果将如下所示;
[ { DATA_ID: 1,
DATA_NAME: 'XX',
DATA_GROUP: 2313,
CODE_NO: 1 },
{ DATA_ID: 6,
DATA_NAME: 'YY',
DATA_GROUP: 4213,
CODE_NO: 2 }
]
我正在使用node.js v6
答案 0 :(得分:1)
您可以通过array.filter执行简单的java脚本操作:
var arr = [ { DATA_ID: 1,
DATA_NAME: 'XX',
DATA_GROUP: 2313,
CODE_NO: 1 },
{ DATA_ID: 6,
DATA_NAME: 'YY',
DATA_GROUP: 4213,
CODE_NO: 2 },
{ DATA_ID: 4,
DATA_NAME: 'ZZ',
DATA_GROUP: 2123,
CODE_NO: 3 },
{ DATA_ID: 8,
DATA_NAME: 'ZZ',
DATA_GROUP: 2123,
CODE_NO: 3 } ]
var res =arr.filter(function(elem){
if (elem.CODE_NO != 3)
return elem
})
console.log(res)
答案 1 :(得分:1)
**使用此:**
let array =
[ { DATA_ID: 1,
DATA_NAME: 'XX',
DATA_GROUP: 2313,
CODE_NO: 1 },
{ DATA_ID: 6,
DATA_NAME: 'YY',
DATA_GROUP: 4213,
CODE_NO: 2 },
{ DATA_ID: 4,
DATA_NAME: 'ZZ',
DATA_GROUP: 2123,
CODE_NO: 3 },
{ DATA_ID: 8,
DATA_NAME: 'ZZ',
DATA_GROUP: 2123,
CODE_NO: 3 } ];
for (var key in array ){
if(array[key].CODE_NO==3){
delete array[key];
}
}
答案 2 :(得分:1)
如果已经有Ramda项目依赖,我会发布一个“替代”解决方案。 @asdf_enel_hak示例是很好的钱包JS,所以如果你不需要额外的deps,请使用那个例子。
基于Ramda的解决方案:
// complement is like logical not, if value is true returns false and on true returns false
// it does not return boolean value but new function
const codeIsNot3 = R.complement(
R.propEq("CODE_NO", 3) // Property based equal check, without R.complement it would return all objects where code_no is 3
);
R.filter(codeIsNot3, arr);
答案 3 :(得分:0)
此代码可以使用。诀窍在于使用array.splice(i,1)
删除有问题的对象。
for (let i=0;i< array.length; i++ ){
if (array[key].CODE_NO===3){
array.splice(i,1);
}
}
array
是您问题中发布的数组。