gpt4 book ai didi

javascript - 如何遍历嵌套数据

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

我必须遍历一个大数据集来收集 javascript 中节点的最终子元素。

我需要以在子详细信息中找到的分支代码数组结束。这是我试图获得的输出:

[1000, 1201, 1202, 2101, 3101, 3201]

{
"TITLE": {
"FirstLevel": {
"Details": {
"Code": "01",
},
"SecondLevel": [
{
"Details": {
"Description": "{desc}",
},
"ThirdLevel": {
"Details": {
"Code": "01",
},
"FourthLevel": [
{
"Details": {
"Code": "11",
},
"Branch": {
"Details": {
"Code": "1000",
}
}
},
{
"Details": {
"Code": "12",
},
"Branch": [
{
"Details": {
"Code": "1201",
}
},
{
"Details": {
"Code": "1202",
}
}
]
}
]
}
},
{
"Details": {
"Code": "100",
},
"ThirdLevel": [
{
"Details": {
"Code": "02",
},
"FourthLevel": {
"Details": {
"Code": "21"
},
"Branch": {
"Details": {
"Code": "2101",
}
}
}
},
{
"Details": {
"Code": "03",
},
"FourthLevel": [
{
"Details": {
"Code": "31",
},
"Branch": {
"Details": {
"Code": "3101",
}
}
},
{
"Details": {
"Code": "32",
},
"Branch": {
"Details": {
"Code": "3201",
}
}
}
]
}
]
}
]
}
}
}

我查看了更多基本问题的答案并尝试调整解决方案。

一个这样的解决方案接受传递的 id,并将根据 id 更新名称。我想我可以在这里使用类似的 map 实现。存在一个问题,因为该数组不仅有“子节点”来表示子节点的位置。

function update(object, passedId) {

object.children.map((element, index) => {
if (element.id === passedId) {
console.log(index)
object.children[index].name = "New Name"
}
if (element.children != null) { // condition for checking Nesting
update(element, passedId)
}
})

console.log(object.children)
}

update(obj, "Branch");

接下来我尝试了一种更简单的方法

function getSubItem(obj) {
for (item in obj) {
for (subItem in obj[item]) {
for (subsubItem in obj[subItem]){
console.log(obj[item][subItem][subsubItem]);
}
}
}
}
getSubItem(obj)

等等,在sub item之后的sub之后添加sub,但是那种嵌套的for循环看起来非常不稳定,而且由于分支可以嵌套在不同的区域,所以它看起来也不可靠。我在这里错过了一个简单的解决方案吗?

最佳答案

类似于:

function update (data, passedId, acc = []) {
if (!_.isObject(data)) {
return acc;
}

return _.reduce(_.values(data), (result, item) => {
result = _.chain(item)
.get(passedId)
.thru(val => [val])
.flatten()
.compact()
.map('Details.Code')
.thru(vals => _.concat(result, vals))
.value();
return update(item, passedId, result);
}, acc);
}

const res = update(data, 'Branch');

关于javascript - 如何遍历嵌套数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48582631/

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