这是我的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
中获得了数据,但我希望将其分别存储在id
和name
的数组中,看起来我的代码看起来如下所示
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
});
}
我该怎么办?
答案 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
,但不能同时使用两者。