如何使用jquery从json数组中分离值。

时间:2013-05-24 12:13:56

标签: javascript jquery json html5 jquery-mobile

这是我的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
    });
}

我该怎么办?

3 个答案:

答案 0 :(得分: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"
    ]

]

您使用签名函数(index,Objvalue)给出的anomnymous函数将应用于每个元素,其中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];
}

答案 1 :(得分: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];
}

答案 2 :(得分:0)

删除外部for循环。 $.each已遍历data数组。 data[i]不是数组,因此$.each无法迭代它。

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

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