如何使用过滤功能在javascript中过滤对象?

时间:2016-03-28 09:36:42

标签: javascript jquery

我正在尝试使用过滤功能过滤javascript对象。但我得到的错误键未定义。我的代码是 https://jsfiddle.net/13n8n3om/

var arr=[
  {
    "EX": {

      "division": "abc",
      "is_active": true,

    }
  },
 {
    "PY": {

      "division": "pqwww",
      "is_active": false,

    }
  }
];

 arr = arr.filter(function(obj) {
                return obj[key] !== 'EX';
            });

            console.log(arr)

预期输出

[

 {
    "PY": {

      "division": "pqwww",
      "is_active": false,

    }
  }
]

3 个答案:

答案 0 :(得分:1)

替换

return obj[key] !== 'EX';

return Object.keys(obj)[0] !== 'EX';

基本上你需要访问obj的第一个属性,而key是未定义的。

答案 1 :(得分:1)

如果对象的键与给定的字符串不相等,只需检查它的键。

var arr = [{ "EX": { "division": "abc", "is_active": true, } }, { "PY": { "division": "pqwww", "is_active": false, } }];

arr = arr.filter(function (obj) {
    return Object.keys(obj)[0] !== 'EX';
});

document.write('<pre>' + JSON.stringify(arr, 0, 4) + '</pre>');

答案 2 :(得分:0)

您需要检查obj是否EX不是这样的:

arr = arr.filter(function(obj, key) {
          if (! obj.EX) {
              return obj;
          }
       });