gpt4 book ai didi

javascript - JS 循环遍历 json 对象

转载 作者:行者123 更新时间:2023-11-28 20:30:18 28 4
gpt4 key购买 nike

我正在尝试迭代一个 json 对象(在 javascript 中),但它似乎无法正常工作...编写递归函数对我来说非常令人困惑,所以也许这里的专家之一可以帮助我:)

json 对象:

{
"Node": [
{
"Name": {
"#text": "Folder"
}
},
{
"Name": {
"#text": "Folder 2"
}
},
{
"Name": {
"#text": "Folder 3"
},
"Nodes": {
"Node": {
"Name": {
"#text": "Folder 3.1"
},
"Nodes": {
"Node": [
{
"Name": {
"#text": "Folder 3.1.1"
},
"Nodes": {
"Node": {
"Name": {
"#text": "Folder 3.1.1.1"
}
}
}
},
{
"Name": {
"#text": "Test 2"
}
}
]
}
}
}
},
{
"Name": {
"#text": "Folder 4"
}
}
]
}

我尝试解决问题

function newFolder(_data) {    
for (var i = 0; i < _data.length; i++) {      
if (_data[i].Nodes) {        
Ti.API.info("Sub: "); //+ _data[i].Nodes.Node.length );
        
return newFolder(_data[i].Nodes.Node);      
} else {        
Ti.API.info("Main: " + _data[i].Name["#text"]);      
}      
Ti.API.info("Main: " + _data[i].Name["#text"]);    
}  
}

问题是,这些函数并没有像我想要的那样贯穿每个元素。

我读过一些有关 jQuery 的内容,但我对此不太熟悉。另外我正在使用 Titanium,我不知道是否可以使用 jquery。

如果有人能帮助我解决这个问题,那就太棒了:)

最佳答案

Working FIDDLE Demo

我认为您的 JSON 非常复杂,因为没有必要。如果您有这样的对象:

var data = {
"nodes": [
{ "name": "Folder 1" },
{ "name": "Folder 2" },
{ "name": "Folder 3" },
{
"name": "Folder 4",
"nodes": [
{ "name": "Folder 4.1" },
{
"name": "Folder 4.2",
"nodes": [
{ "name": "Folder 4.2.1" },
{ "name": "Folder 4.2.2" },
{ "name": "Folder 4.2.3" }
]
},
{ "name": "Folder 4.3" }
]
},
{ "name": "Folder 5" }
]

};

您可以通过递归函数对其进行迭代:

function iterateNodes(data) {
for (var i = 0, l = data.nodes.length; i < l; i++) {
var node = data.nodes[i];

console.log(node.name);

if (node.nodes) {
arguments.callee(node);
}
}
}

iterateNodes(data);

检查FIDDLE Demo .

关于javascript - JS 循环遍历 json 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16565464/

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