我有array
看起来像这样
const arr = ["a", "b", "c", {d: [...]}, {e: [...]}, "f", "g"]
如何检查带有object
key
或d
的{{1}}是否在数组中?
答案 0 :(得分:1)
如果您只需要在一个级别检查密钥,则可以使用some()
。
const arr = ["a", "b", "c", {d: [1]}, {e: [1]}, "f", "g"]
var check = arr.some(function(e) {
return typeof e == 'object' && (e.hasOwnProperty('d') || e.hasOwnProperty('e'))
})
console.log(check)
答案 1 :(得分:0)
您可以使用ES2015的Object.keys()
来获取对象自己的可枚举密钥:
const hasMatchingObject = arr.some((element) => {
return (
element instanceof Object &&
(
Object.keys(element).includes("d") ||
Object.keys(element).includes("e")
)
);
});
(请注意,我已使用includes
作为ES2016的一部分,但您也可以使用旧的indexOf
方法。
答案 2 :(得分:0)
您可以find使用arrow function:
const arr = ["a", "b", "c", {d: [{id:1, value:'value d'}]},
{e: [{id:1, value:'value e'}]}, "f", "g"];
console.log(arr.find(i => i.d)); // will return the object/array
console.log(arr.find(i => i.x)); // undefined, it doesn't exist