我正在尝试使用过滤功能过滤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,
}
}
]
答案 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;
}
});