满足某些条件时,从该对象数组中删除对象

时间:2016-11-16 07:25:17

标签: arrays json node.js javascript-objects

我在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

4 个答案:

答案 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是您问题中发布的数组。