2016-03-28 214 views
0

我试图使用过滤器的功能。但我收到错误关键是没有定义。在这里过滤JavaScript对象是我的代码 https://jsfiddle.net/13n8n3om/如何在javascript中使用过滤器函数过滤对象?

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, 

    } 
    } 
] 
+0

好那是因为你从来没有定义'key' – millerbr

+1

'OBJ [Object.keys( obj)[0]]'可能会起作用。 – Andy

+1

'obj.hasOwnProperty('EX')'应该可以工作。 @Andy如果'obj'有多个属性,它可能不起作用。 – rhgb

回答

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>');

1

更换

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

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

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

+2

'Object(obj).keys [0]'是错误的。 – Andy

+0

无法正常工作请检查并分享fidddle – user944513

+0

@Andy纠正了它..谢谢指出 – gurvinder372

0

你需要检查objEX就像这样:

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