【问题标题】:jQuery: How to loop through multidimensional arrayjQuery:如何循环遍历多维数组
【发布时间】:2015-07-20 09:31:10
【问题描述】:

我是 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"
  }
}

提前非常感谢。

【问题讨论】:

  • .ajax.php 以什么格式返回您的数据?
  • 你能发布实际的回复吗?无论当前采用何种格式,都很难阅读。
  • @RoryMcCrossan:这是我发布的示例数组。
  • @George:我认为这与 Rory 的问题相同。我更新了帖子以更好地展示这一点。

标签: jquery arrays ajax loops


【解决方案1】:

您也可以使用嵌套的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讨论后):

不需要二维数组,一维数组更适合,所以数组变成:

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/

【讨论】:

  • 谢谢!在我的情况下,ajax 结果称为数据,所以我必须在您的解决方案中将“outerArray”替换为“data”吗?
  • 是的,将“outerArray”替换为“data”。不客气:)
  • 谢谢 - 我已经尝试过了,但是我在控制台中没有定义。
  • 你能分享一下你的确切数组吗?
  • 我认为您不必要地创建二维数组,请参阅小提琴“jsfiddle.net/Lvkbtuwz/1”这是您想要的吗?结果见控制台
【解决方案2】:

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

那么你可以在JS中使用数组作为对象。

-----编辑---21.07.2015 如果 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
}

【讨论】:

  • 谢谢!如果我在 PHP 端执行此操作,那么我将在 jQuery 中使用什么循环?
  • 更新:我认为这可能是这里的方法,因为它简化了 jQuery 部分,但我仍然需要一些关于如何处理这个问题的指导。
【解决方案3】:

遍历数组的基本思想可以用javascript来实现。

数组具有forEach 函数,您可以在其中迭代数组元素。使用以下示例构建您的解决方案。

假设您收到 JSON 响应。

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

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

【讨论】:

    猜你喜欢
    • 2014-05-01
    • 2013-08-15
    • 1970-01-01
    • 2015-09-12
    • 2013-04-01
    相关资源
    最近更新 更多