如何从一个数组的数组中进行选择

4

我将尝试比较通过Websockets流式传输的JSON数据。

像这样的数组可以完美地工作:

["stream","apple","orange"]

但是一个数组中包含多个数组就不太好处理:

[["stream","apple","orange"],["stream","pear","kiwi"],["stream","apple","juice"]]

任何帮助都将不胜感激。提前致谢!
function handler(jsonString) {

    var json = jQuery.parseJSON(jsonString);

    if (json[0] == "blah") {
       //Do something
    }

    else if (json[0] == "blah2") {
        //Do something else
    }

}
1个回答

4

首先,确定你想要内部数组中的哪个元素,使用方括号 [0] 从外部引用,然后使用相同的方括号表示法,在该内部数组中引用该项 [0][1]

if (json[0][0] == "blah") {
   //Do something
}
else if (json[0][1] == "blah2") {
    //Do something else
}

所以以下示例将产生这个结果:
json[0][0];  // "stream"
json[0][1];  // "apple"

json[1][0];  // "stream"
json[1][1];  // "pear"

// etc...

要遍历数组中的所有项,您需要在循环内部使用循环。外部循环用于遍历存储在外部数组中的数组,而内部循环用于遍历这些内部数组的值。

就像这样:

for( var i = 0, len_i = json.length; i < len_i; i++ ) {
    for( var j = 0, len_j = json[ i ].length; j < len_j; j++ ) {
        // do something with json[ i ][ j ]; (the value in the inner Array)
    }
}

或者如果您想使用jQuery.each()(文档)

jQuery.each( json, function(i,val) {
    jQuery.each( val, function(j,val_j) {
        // do something with val_j (the value in the inner Array)
    });
});

不过,我更喜欢使用 for 循环。


我正在尝试找到迭代数组的最佳方法,并将每个数组与一个变量绑定,以便我可以使用它来替换页面上的数据。我应该使用$.each来执行此类函数吗?否则,如果(json [0] [0] ==“stream”){ //做其他事情for(var i = 0; i } - DrEval
@DrEval:你需要在循环内部再做一个循环。是的,你可以使用$.each,或者只是一个简单的for循环。虽然我不确定为什么你想要一堆变量。数组存储机制旨在防止需要多个变量。是为了所有的值吗?还是只有某些值?我会在一分钟内给出循环的例子。 - user113716
1
@DrEval 使用for循环遍历数组,除非有特定需要,否则性能更佳。 - Vadim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接