gpt4 book ai didi

javascript - 遍历对象数组的嵌套子对象并使属性等于 false - JavaScript

转载 作者:行者123 更新时间:2023-12-02 22:39:44 26 4
gpt4 key购买 nike

我有一棵树,我想遍历它。我想让每个internalChecked = false。我写了一些代码,但失败了。

let json = [
{
"internalDisabled": false,
"internalChecked": true,
"internalCollapsed": true,
"text": "Steel",
"value": 2,
"internalChildren": [
{
"internalDisabled": false,
"internalChecked": true,
"internalCollapsed": false,
"text": "Cars",
"value": 54,
"internalChildren": [
{
"internalDisabled": false,
"internalChecked": true,
"internalCollapsed": false,
"text": "Sedan",
"value": 55,
"internalChildren": [
{
"internalDisabled": false,
"internalChecked": true,
"internalCollapsed": false,
"text": "test",
"value": 1053
},
{
"internalDisabled": false,
"internalChecked": true,
"internalCollapsed": false,
"text": "cc cc cc",
"value": 1054,
"internalChildren": [
{
"internalDisabled": false,
"internalChecked": true,
"internalCollapsed": false,
"text": "cccccc",
"value": 1055
},
{
"internalDisabled": false,
"internalChecked": true,
"internalCollapsed": false,
"text": "xxxxxxx",
"value": 1056
}
]
}
]
},
{
"internalDisabled": false,
"internalChecked": true,
"internalCollapsed": false,
"text": "train",
"value": 2053,
"internalChildren": [
{
"internalDisabled": false,
"internalChecked": true,
"internalCollapsed": false,
"text": "bullet",
"value": 2054
},
{
"internalDisabled": false,
"internalChecked": true,
"internalCollapsed": false,
"text": "pessenger",
"value": 2055
}
]
}
]
}
]
},
{
"internalDisabled": false,
"internalChecked": true,
"internalCollapsed": true,
"text": "Auto/Boat",
"value": 3
},
{
"internalDisabled": false,
"internalChecked": true,
"internalCollapsed": true,
"text": "Build Your Own Job",
"value": 4
},
{
"internalDisabled": false,
"internalChecked": true,
"internalCollapsed": true,
"text": "Cleaning & Housekeeping",
"value": 5
},
{
"internalDisabled": false,
"internalChecked": true,
"internalCollapsed": true,
"text": "Delivery & Courier",
"value": 6
},
{
"internalDisabled": false,
"internalChecked": true,
"internalCollapsed": true,
"text": "Handyman",
"value": 7
},
{
"internalDisabled": false,
"internalChecked": true,
"internalCollapsed": true,
"text": "Hourly Help",
"value": 8
},
{
"internalDisabled": false,
"internalChecked": true,
"internalCollapsed": true,
"text": "Lawn & Yard",
"value": 10
},
{
"internalDisabled": false,
"internalChecked": true,
"internalCollapsed": true,
"text": "Moving",
"value": 11
},
{
"internalDisabled": false,
"internalChecked": true,
"internalCollapsed": true,
"text": "Organization",
"value": 12
},
{
"internalDisabled": false,
"internalChecked": true,
"internalCollapsed": true,
"text": "Painting",
"value": 13
},
{
"internalDisabled": false,
"internalChecked": true,
"internalCollapsed": true,
"text": "Pet Care",
"value": 14
},
{
"internalDisabled": false,
"internalChecked": true,
"internalCollapsed": true,
"text": "TV Mount & Electronics",
"value": 15
}
];


//CODE
let savedIndex
let outPut= []
let savedJson = json

function traverseArray(__json, __index){
for (let i = 0; i < __json.length; i++) {
const _item = __json[i];
_item.internalChecked = false
outPut.push({
..._item
})
if(_item.internalChildren && _item.internalChildren.length > 0){
savedIndex = __index
traverseArray(_item.internalChildren, i)
}
}
return outPut
}

console.log(traverseArray(json, 0))

最佳答案

您将每个 json block 推送到输出数组中,这使得输出与实际不同,只需使用 __json[i].internalChecked = false在你的循环中,它将更新你正在迭代的数组:

let json = [ { "internalDisabled": false, "internalChecked": true, "internalCollapsed": true, "text": "Steel", "value": 2, "internalChildren": [ { "internalDisabled": false, "internalChecked": true, "internalCollapsed": false, "text": "Cars", "value": 54, "internalChildren": [ { "internalDisabled": false, "internalChecked": true, "internalCollapsed": false, "text": "Sedan", "value": 55, "internalChildren": [ { "internalDisabled": false, "internalChecked": true, "internalCollapsed": false, "text": "test", "value": 1053 }, { "internalDisabled": false, "internalChecked": true, "internalCollapsed": false, "text": "cc cc cc", "value": 1054, "internalChildren": [ { "internalDisabled": false, "internalChecked": true, "internalCollapsed": false, "text": "cccccc", "value": 1055 }, { "internalDisabled": false, "internalChecked": true, "internalCollapsed": false, "text": "xxxxxxx", "value": 1056 } ] } ] }, { "internalDisabled": false, "internalChecked": true, "internalCollapsed": false, "text": "train", "value": 2053, "internalChildren": [ { "internalDisabled": false, "internalChecked": true, "internalCollapsed": false, "text": "bullet", "value": 2054 }, { "internalDisabled": false, "internalChecked": true, "internalCollapsed": false, "text": "pessenger", "value": 2055 } ] } ] } ] }, { "internalDisabled": false, "internalChecked": true, "internalCollapsed": true, "text": "Auto/Boat", "value": 3 }, { "internalDisabled": false, "internalChecked": true, "internalCollapsed": true, "text": "Build Your Own Job", "value": 4 }, { "internalDisabled": false, "internalChecked": true, "internalCollapsed": true, "text": "Cleaning & Housekeeping", "value": 5 }, { "internalDisabled": false, "internalChecked": true, "internalCollapsed": true, "text": "Delivery & Courier", "value": 6 }, { "internalDisabled": false, "internalChecked": true, "internalCollapsed": true, "text": "Handyman", "value": 7 }, { "internalDisabled": false, "internalChecked": true, "internalCollapsed": true, "text": "Hourly Help", "value": 8 }, { "internalDisabled": false, "internalChecked": true, "internalCollapsed": true, "text": "Lawn & Yard", "value": 10 }, { "internalDisabled": false, "internalChecked": true, "internalCollapsed": true, "text": "Moving", "value": 11 }, { "internalDisabled": false, "internalChecked": true, "internalCollapsed": true, "text": "Organization", "value": 12 }, { "internalDisabled": false, "internalChecked": true, "internalCollapsed": true, "text": "Painting", "value": 13 }, { "internalDisabled": false, "internalChecked": true, "internalCollapsed": true, "text": "Pet Care", "value": 14 }, { "internalDisabled": false, "internalChecked": true, "internalCollapsed": true, "text": "TV Mount & Electronics", "value": 15 } ];


let savedIndex
let savedJson = json

function traverseArray(__json, __index){
for (let i = 0; i < __json.length; i++) {
__json[i].internalChecked = false
if (__json[i].internalChildren) {
savedIndex = __index
traverseArray(__json[i].internalChildren, i)
}
}
return savedJson
}

console.log("original length:: ", json.length);
const output = traverseArray(savedJson, 0);
console.log("output length:: ", output.length);

console.log("output:: ", output);

此外,if 子句,

if (__json[i].internalChildren && __json[i].internalChildren.length > 0)

可以很简单

if (__json[i].internalChildren)

关于javascript - 遍历对象数组的嵌套子对象并使属性等于 false - JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58624359/

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