如何解决迭代嵌套对象以找到键属性并返回该对象-Javascript
我有一个父对象和多个子对象,这是结构:
parent: {
child1: {
"aaa": {values: [],type: "string",title: "AAA"},"bbb": {values: [],title: "BBB"},"ccc": {values: [],title: "CCC"},"ddd": {values: [],title: "DDD"}
},child2: {
"eee": {values: [],title: "EEE"},"fff": {values: [],title: "FFF"},"ggg": {values: [],title: "GGG"},"hhh": {values: [],title: "HHH"}
},child3: {
"iii": {values: [],title: "III"},"jjj": {values: [],title: "JJJ"},"kkk": {values: [],title: "KKK"},"lll": {values: [],title: "LLL"}
}
}
现在我有一个函数,它从子对象的键中返回一个子值。例如:
function childVal() {
//do somehting
return "aaa";
}
现在取决于此值,我想获取整个子对象,例如:如果返回的值为"bbb"
,我希望返回具有"bbb"
键的对象,在这种情况下,该键为child1
。
因此输出以下值:
"aaa": return child1;
"ggg": return child2;
"bbb": return child1;
"lll": return child3;
这可能吗?
解决方法
function parentFilter(parent,myFilter) {
return Object.values(parent).filter(child => Object.keys(child).some(key => key===myFilter));
}
let parent = {
child1: {
"aaa": {values: [],type: "string",title: "AAA"},"bbb": {values: [],title: "BBB"},"ccc": {values: [],title: "CCC"},"ddd": {values: [],title: "DDD"}
},child2: {
"eee": {values: [],title: "EEE"},"fff": {values: [],title: "FFF"},"ggg": {values: [],title: "GGG"},"hhh": {values: [],title: "HHH"}
},child3: {
"iii": {values: [],title: "III"},"jjj": {values: [],title: "JJJ"},"kkk": {values: [],title: "KKK"},"lll": {values: [],title: "LLL"}
}
};
console.log(parentFilter(parent,'aaa'));
console.log('-----------');
console.log(parentFilter(parent,'ggg'));
console.log('-----------');
console.log(parentFilter(parent,'bbb'));
console.log('-----------');
console.log(parentFilter(parent,'lll'));
,
const parent = {
child1: {
"aaa": {values: [],}
const val = 'aaa';
Object.keys(parent).forEach(el => {
if(parent[el][val] !== undefined) {
console.log(parent[el][val].values)
}
})
,
浏览所有属性,并检查给定键是否是该对象的属性之一。
function childVal(key,parent) {
return Object.values(parent).find(o => o.hasOwnProperty(key));
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。