5

这是我的 json

{
  "data": [
    [
      "1",
      "Skylar Melovia"
    ],
    [
      "4",
      "Mathew Johnson"
    ]
  ]
}

this is my code jquery Code

for(i=0; i<= contacts.data.length; i++) {
    $.each(contacts.data[i], function( index, objValue ){
        alert("id "+objValue);
    });
}

我得到了我的数据,objValue但我想单独存储在数组中idname看起来我的代码如下所示

var id=[];
var name = [];
for(i=0; i<= contacts.data.length; i++){
    $.each(contacts.data[i], function( index, objValue ) {
        id.push(objValue[index]); // This will be the value "1" from above JSON
        name.push(objValue[index]); // This will be the value "Skylar Melovia"   from above JSON
    });
}

我怎样才能做到这一点。

4

3 回答 3

3
 $.each(contacts.data, function( index, objValue )
 {
    id.push(objValue[0]); // This will be the value "1" from above JSON
    name.push(objValue[1]); // This will be the value "Skylar Melovia"   from above JSON

 });

编辑,替代用法:

 $.each(contacts.data, function()
 {
    id.push(this[0]); // This will be the value "1" from above JSON
    name.push(this[1]); // This will be the value "Skylar Melovia"   from above JSON
 });

$.each 将遍历contacts.data,即:

[
    //index 1
    [
      "1",
      "Skylar Melovia"
    ],
    //index=2
    [
      "4",
      "Mathew Johnson"
    ]

]

您使用签名 function(index,Objvalue) 提供的匿名函数将应用于每个元素,index其在 contact.data 数组中的索引objValue及其值。对于 index=1,您将拥有:

objValue=[
          "1",
          "Skylar Melovia"
        ]

然后您可以访问 objValue[0] 和 objValue[1]。

编辑(响应 Dutchie432 的评论和回答;)):在没有 jQuery 的情况下更快地做到这一点, $.each 更好地编写和阅读,但在这里你使用普通的旧 JS:

for(i=0; i<contacts.data.length; i++){
    ids.push(contacts.data[i][0];
    name.push(contacts.data[i][1];
}
于 2013-05-24T12:19:42.263 回答
1

也许我没有完全理解,但我认为您正在循环遍历数据项,然后也循环遍历包含的值。我认为您想要的只是循环遍历数据项并分别提取值 0 和 1。

另外,我相信您希望less than (<)操作员在您的循环中,而不是less than or equal to (<=)

for(i=0; i<contacts.data.length; i++){
    ids.push(contacts.data[i][0];
    name.push(contacts.data[i][1];
}
于 2013-05-24T12:18:07.730 回答
0

拆下外环for$.each已经遍历data数组。 data[i]不是一个数组,所以$.each不能迭代它。

http://jsfiddle.net/ExplosionPIlls/4p5yh/

您也可以使用for循环代替$.each,但不能同时使用。

于 2013-05-24T12:18:28.290 回答