繁体   English   中英

遍历带有嵌套数组的JSON对象

[英]Iterate through a JSON Object with nested arrays

如何使用两个或多个嵌套数组迭代以下JSON对象? 此处的输出未使用key:value返回。 这只是价值观。

{"Obj":
    ["array 0",
        ["nested array 1"],
        ["nested array 2"]
    ]
};

我可以使用Obj[1]查看每个数组,但输出仍为JSON: {"Obj":["nested array 1"]} 我需要遍历所有这些对象以获得每个嵌套数组中的文本以放入textarea ...

救命!

谢谢大家!

您可以使用.each()遍历每个级别的数组。 在第一层,您可以使用$.type()来确定值的类型,以帮助决定是输出该值还是对其进行进一步迭代。

var data = {"Obj":
    ["array 0",
        ["nested array 1"],
        ["nested array 2"]
    ]
};

$.each( data.Obj, function(i,v) {
    if( $.type( v ) == 'string' ) {
        // assign v to text
    } else {
        $.each( v, function(index, value) {
            //assign value to text
        });
    }
});

对于非jQuery解决方案,请尝试Obj[i][j] 以下代码向控制台输出“嵌套数组1”,然后输出“嵌套数组2”。

for (var i = 0; i < Obj.length; i++) {
    for (var j = 0; j < Obj[i].length; j++) {
        console.log(Obj[i][j]);
    }
}

遍历对象或数组的一种简单方法是使用jQuery.each()

通用迭代器函数,可用于无缝迭代对象和数组。 具有长度属性的数组和类似数组的对象(例如函数的arguments对象)通过从0到length-1的数字索引进行迭代。 其他对象通过其命名属性进行迭代。

例:

var obj = {
  "flammable": "inflammable",
  "duh": "no duh"
};
$.each( obj, function( key, value ) {
  alert( key + ": " + value );
});

如果嵌套数组的数量未知,则可能需要创建一个使用嵌套值调用自身的递归函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM