Javascript 在对象中找到所有的孙辈并对他们进行迭代?
我有下面的javascript对象 我需要找到Javascript 在对象中找到所有的孙辈并对他们进行迭代?,javascript,Javascript,我有下面的javascript对象 我需要找到 “prop3”子项的总数-在下面的示例中为7 找到第一个prop3子项,然后对它们进行迭代,直到找到最后一个(在步骤表单thingy中使用) 有什么想法吗 { "d399ca811f45": { "prop1": "d399ca811f45", "prop2": {}, "prop3": { "1d2097764d06": { "head
{
"d399ca811f45": {
"prop1": "d399ca811f45",
"prop2": {},
"prop3": {
"1d2097764d06": {
"header": "value",
"subprop1": "1d2097764d06"
}
}
},
"6d0cb4c7748b": {
"prop1": "6d0cb4c7748b",
"prop3": {
"3a29208f0015": {
"header": "value",
"subprop1": "3a29208f0015"
},
"e8eb0f1b339b": {
"header": "value",
"subprop1": "3a29208f0015"
},
"05d43aaf7ef7": {
"header": "value",
"subprop1": "3a29208f0015"
}
}
},
"39feecfa5498": {
"prop1": "39feecfa5498",
"prop2": {},
"prop3": {
"57a07392b86e": {
"header": "value",
"subprop1": "3a29208f0015"
},
"fd84d411a823": {
"header": "value",
"subprop1": "3a29208f0015"
},
"75ff469329ab": {
"header": "value",
"subprop1": "3a29208f0015"
}
}
}
}
您正在寻找的概念称为“对象循环”。一旦理解了这个概念,您就可以组合不同的循环来生成您要查找的数据集 可以使用循环在原始数据结构上迭代。一个循环用于顶级对象,另一个循环用于
prop3
对象。但是,您也可以使用helper将对象转换为数组,并使用JS中数组可用的所有迭代工具,如和
考虑以下将对象集合转换为数组的解决方案:
var数据={“d399ca811f45”:{“prop1”:“d399ca811f45”,“prop2”:{},“prop3”:{“1d2097764d06”:{“header”:“value”,“subop1”:“1d2097764d06”}}},“6d0cb4c7748b”:{“prop1”:“6d0cb4c7748b”,“prop3”:{“3a29208f0015”:{“header”:“value”,“subop1”:“3a29208f0015”},“E8EB0F139B”:“header”value”,“subop1”:“subop5”,“05d43aaf7ef7:{“标头”:“值”,“Subop1”:“3a29208f0015”}}},“39feecfa5498”:{“prop1”:“39feecfa5498”,“prop2”:{},“prop3”:{“标头”:“值”,“Subop1”:“3A292F0015”},“FD84D41A823”:“标头”:“值”,“Subop1”:“3a29208f0015”},“75ff469329ab”:{“标头”值,“Subop1”:“Subop1”}
//将“数据”转换为数组,并将所有项减少为
//仅使用prop3项构建新数组
var prop3List=Object.values(data).reduce(函数(列表,项){
//将prop3项添加到集合中
返回list.concat(Object.values(item.prop3));
}, []);
console.log('Prop3总计',Prop3列表长度);
console.log('第一项',prop3List[0])
//循环浏览所有项目
prop3List.forEach(功能(项目){
//item.header
//项目1.1
console.log(item.header,item.subsp1)
})
您可以根据当前需求使用此功能
constpropgetter=(数据,键名)=>{
让propArray=[]
Object.keys(数据).forEach(rootKey=>{
key(数据[rootKey]).forEach(key=>{
如果(键===键名){
Object.keys(数据[[rootKey]][[key]]).forEach(子键=>{
propArray.push({[subKey]:数据[[rootKey]][[key]][[subKey]]})
})
}
})
})
返回通道
}
const data={“d399ca811f45”:{“prop1”:“d399ca811f45”,“prop2”:{},“prop3”:{“1d2097764d06”:{“header”:“value”,“subP1”:“1d2097764d06”}}},“6d0cb4c7748b”:{“prop1”:“6d0cb4c7748b”,“prop3”:{“3a29208f0015”:{“header”:“value”,“subP1”:“3A298F0015”},“E8EBB339B”:“header”value”,“subP208F0015”{“header”:05d43aaf7ef7:{“标头”:“值”,“Subop1”:“3a29208f0015”}}},“39feecfa5498”:{“prop1”:“39feecfa5498”,“prop2”:{},“prop3”:{“标头”:“值”,“Subop1”:“3A292F0015”},“FD84D41A823”:{“标头”:“值”,“Subop1”:“3a29208f0015”},“75FF4629AB”:“标头”{“值”,“Subop1”:“3A298F0015”}
console.log(propGetter(data,'prop3'));
@mplungjan vue tag已删除,这是一个错误。但是您链接到的答案并没有回答这个问题。我知道如何访问对象的值,但我的问题是如何获取孙子(而不是子)的总数,在我的例子中,超过多个孩子?所以不仅仅是一个孩子的孙子孙女,而是多个孩子的孙子孙女总数。我为您制作并修复了一个片段