使用嵌套数组迭代JSON对象

时间:2014-10-05 21:06:46

标签: javascript jquery arrays json

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

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

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

帮助!

全部谢谢!

3 个答案:

答案 0 :(得分:0)

您可以使用.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
        });
    }
});

答案 1 :(得分:0)

对于非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]);
    }
}

答案 2 :(得分:0)

循环访问对象或数组的简单方法是使用jQuery.each()

  

通用迭代器函数,可用于无缝迭代   对象和数组。数组和数组类似的对象   重复长度属性(例如函数的参数对象)   按数字索引,从0到长度-1。其他对象通过迭代   他们的命名属性。

示例:

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

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