gpt4 book ai didi

JavaScript 查找对象属性

转载 作者:行者123 更新时间:2023-11-30 07:31:05 25 4
gpt4 key购买 nike

我想在对象内部找到我想要的属性。
有一个对象。

let obj = {
1: {
2 : {
3: {
4: {
5: {

}
}
},
100: {

}
}
},
6: {
7: {
8: {
}
},
14:{

}
},
11: {
12: {

},
13:{

}
}
}
console.log(obj.hasOwnProperty(1)); // true
console.log(obj.hasOwnProperty(6)); // true
console.log(obj.hasOwnProperty(2)); // false
console.log(obj.hasOwnProperty(3)); // false

当我搜索 2(其他)时,我想得到真实的结果。

我该怎么办?

最佳答案

你需要一个递归函数。一种选择是测试 entries 中的 some 是否具有您要查找的属性,或者该条目的值是否是一个对象,并且该对象通过了递归测试:

let obj={1:{2:{3:{4:{5:{}}},100:{}}},6:{7:{8:{}},14:{}},11:{12:{},13:{}}}

function hasNestedProp(obj, findProp) {
findProp = String(findProp);
return Object.entries(obj).some(([key, val]) => {
return (
key === findProp
|| typeof val === 'object' && hasNestedProp(val, findProp)
);
});
}

console.log(hasNestedProp(obj, 1));
console.log(hasNestedProp(obj, 6));
console.log(hasNestedProp(obj, 2));
console.log(hasNestedProp(obj, 3));
console.log(hasNestedProp(obj, 555));

或者,更简洁地说,如果您改为传入字符串值(毕竟属性总是字符串):

let obj={1:{2:{3:{4:{5:{}}},100:{}}},6:{7:{8:{}},14:{}},11:{12:{},13:{}}}

const hasNestedProp = (obj, findProp) => (
Object.entries(obj).some(([key, val]) => (
key === findProp
|| typeof val === 'object' && hasNestedProp(val, findProp)
))
)

console.log(hasNestedProp(obj, '1'));
console.log(hasNestedProp(obj, '6'));
console.log(hasNestedProp(obj, '2'));
console.log(hasNestedProp(obj, '3'));
console.log(hasNestedProp(obj, '555'));

关于JavaScript 查找对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53333142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com