gpt4 book ai didi

javascript - 如何将属性添加到嵌套的 javascript 数组(对象)?

转载 作者:行者123 更新时间:2023-11-29 20:01:19 25 4
gpt4 key购买 nike

我正在尝试向 javascript 嵌套数组对象添加一个属性...

我需要遍历树获取文本属性的值并将其转换为小写并将此数据添加为新属性(lowerText)

旧数组:

 var oldObject= [{
text: "Subgroup3",
items: [{
text: "subgroup5",
items: [{
text: "subgroup6",
items: [{
text: "subgroup7",
items: [{
text: "subgroup8"
}]
}]
}]
}]
}]

我需要如下的新数组对象:

   var newObject= [{
text: "Subgroup3",
lowerText:"subgroup3",
items: [{
text: "subgroup5",
lowerText:"subgroup5",
items: [{
text: "subgroup6",
lowerText:"subgroup6",
items: [{
text: "subgroup7",
lowerText:"subgroup7",
items: [{
text: "subgroup8",
lowerText:"subgroup8",
}]
}]
}]
}]
}]

这是我尝试过的方法,遍历每个对象并将项目(数组)传递给递归函数以设置属性,但它似乎无法正常工作。不确定我做错了什么,有人可以帮我处理这段代码吗?

for (var i = 0; i < data.length; i++) {
data[i].lowerText=data[i].text.toLowerCase();
loopTree(data[i].items);
}

function loopTree(node){
if (node) {
$.each(node, function (idx, item) {
item.lowerText=item.text.toLowerCase();
if(item.items){
loopTree(item.items)
}
});
}
}

编辑:下面的代码完成了这项工作。

  for (var i = 0; i < data.length; i++) {
if(data[i]){
process( data[i]);
}
}

function process(val) {
val.lowerText = val.text.toLowerCase();
if(val.items){
for(var i = 0, len = val.items.length; i < len; i++) {
process(val.items[i]);
}
}
}

最佳答案

如果你不想克隆对象而只想修改现有的对象,试试这个:

function process(val) {
val.lowerText = val.text.toLowerCase();

for(var i = 0, len = val.items.length; i < len; i++) {
process(val.items[i]);
}
}

process(obj);

关于javascript - 如何将属性添加到嵌套的 javascript 数组(对象)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14367101/

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