【发布时间】:2017-07-02 11:13:01
【问题描述】:
我有一个过滤器函数,它仅在将 JSON 传递给它时才返回 undefined。我想用这个函数来过滤对象、JSON 或任何东西。在对象和 JSON 上进行这项工作的最佳方法是什么?
let a = [{
"employees": {
"employee": [{
"id": "1",
"firstName": "Tom",
"lastName": "Cruise"
}, {
"id": "2",
"firstName": "Maria",
"lastName": "Sharapova"
}, {
"id": "3",
"firstName": "James",
"lastName": "Bond"
}]
}
}];
var b = [{
name: '',
grade: 'x'
}, {
name: 'yaya',
grade: 'x'
}, {
name: 'x',
frade: 'd'
}, {
name: 'a',
grade: 'b'
}];
function findIt(arr, searchKey) {
return arr.filter(obj => Object.keys(obj).some(key => obj[key].includes(searchKey)));
}
if (a) {
console.log("I found: ", findIt(a, "James")); // breaks
}
if (b) {
console.log("I found: ", findIt(b, "yaya")); // works fine
}
【问题讨论】:
-
那里没有 JSON,你有一个数组。为某种结构编写的函数不会神奇地适用于任何结构,或者在这种情况下,嵌套?
-
obj[key]是一个对象,而该对象没有includes属性。
标签: javascript json ecmascript-6