jQuery:如何循环遍历多维数组

时间:2015-07-20 09:31:11

标签: jquery arrays ajax loops

我是jQuery的新手,希望有人可以帮助我。

我使用成功函数(data)进行Ajax调用,返回如下所示的数组。

现在我必须循环遍历这个并且对于每个“tID”我必须对相应的“内容”做一些事情。

我正在考虑使用类似下面的内容,但无法弄清楚如何应用此处:

$.ajax({        
    type: "post",   
    url: "ajax.php",
    cache: "false",
    data: {
        node: 'fetchContent',
        tIDs: tIDs
    },
    success: function(data){
        $.each(data.arr, function(index, value){
            console.log(value.content);
        });
    }
});

有人可以帮我吗?

示例数组(Ajax结果):

array(3) {
  [0]=>
  array(2) {
    ["tID"]=>
    int(1)
    ["content"]=>
    string(6) "Value1"
  }
  [1]=>
  array(2) {
    ["tID"]=>
    int(2)
    ["content"]=>
    string(6) "Value2"
  }
  [2]=>
  array(2) {
    ["tID"]=>
    int(3)
    ["content"]=>
    string(6) "Value3"
  }
}

非常感谢提前。

3 个答案:

答案 0 :(得分:2)

您可以使用嵌套的for loop

var i,j,arrayItem;
for (i = 0; i < outerArray.length; ++i) {
    arrayItem = outerArray[i];
    for (j = 0; j < arrayItem.length; ++j) {
        console.log(arrayItem[j].tID);
        console.log(arrayItem[j].content);
    }
}

编辑(与OP讨论后):

不需要2-D阵列,1D阵列更适合,因此阵列变为:

var data= [
 {
      "tID" : 1,
      "content": "Value1"
  },  
  {
      "tID" : 2,
      "content": "Value2"
  },
  {
      "tID" : 3,
      "content": "Value3"
  }
];

for loop成为:

for(i=0;i<data.length;i++){
    console.log(data[i].tID);
    console.log(data[i].content);
}

请参阅小提琴:“http://jsfiddle.net/Lvkbtuwz/1/

答案 1 :(得分:1)

在php中你必须返回不是数组而是返回json_encode($ array)

然后你可以在JS中将数组用作Object。

- - - - ---编辑2015年7月21日 如果PHP中的数组看起来像这样

echo json_encode(array(0 => array("name" => "Gen"), 1 => array("name" => "Peter")));

**注意顺序数组索引0,1 *

然后json将如下所示,可以将每个元素用作数组作为对象

[{"name":"Gen"},{"name":"Peter"}] //and then can you iterate using
$.each(arrayFromPhp, function (index, obj)
{
    console.log(obj.name); //will output gen and Peter
});

但是如果PHP中的数组看起来像这样

echo json_encode(array(3 => array("name" => "Gen"), 8 => array("name" => "Peter")));

**请注意,数组索引不是顺序的3,8 *

然后JSON看起来像这不再是数组

{"3":{"name":"Gen"},"8":{"name":"Peter"}}

然后你必须像这样迭代

for (i in arrayFromPhp)
{
    console.log(arrayFromPhp[i].name) //will output gen and peter
}

答案 2 :(得分:1)

使用javascript可以实现迭代数组的基本思想。

数组具有forEach函数,您可以遍历数组元素。使用以下示例构建解决方案。

假设您收到JSON回复。

var response = JSON.parse(ajaxRespons);
response.forEach(function(element,index){
    element.forEach(function(innerElement,index){
     //access ur inner elements here
    })
})

以上只是一个想法。你必须做一些试运行才能得到这个想法。