2016-03-28 216 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; 
      } 
     });