如何使用 jQuery foreach 进入多维数组?奇怪的行为
Posted
技术标签:
【中文标题】如何使用 jQuery foreach 进入多维数组?奇怪的行为【英文标题】:How to foreach into a multidimensional array with jQuery? Strange behaviour 【发布时间】:2011-09-17 04:54:02 【问题描述】:如果有人能解释一下为什么警报框不返回数组而是空的??
var response = new Array();
response[0] = new Array();
response[1] = new Array();
response[2] = new Array();
response[0]["Id"] = 1;
response[0]["StreetAddress"] = 'xxx';
response[0]["Place"] = 'yyy';
response[1]["Id"] = 2;
response[1]["StreetAddress"] = 'xxx';
response[1]["Place"] = 'yyy';
response[2]["Id"] = 3;
response[2]["StreetAddress"] = 'xxx';
response[2]["Place"] = 'yyy';
$.each(response , function(key1, value1)
alert(value1);
);
实际上,我会从 web 服务中得到这种数组,我需要循环到这个数组中来检索数据。
但我不明白为什么循环不能正常工作。
提前谢谢你们。
【问题讨论】:
【参考方案1】:那不是多维数组,而是无效代码。 Arrays
和 Objects
(哈希)在 javascript(和大多数其他语言)中是不同的东西,而不是在 php 中。
所以在顶部你应该写以下内容:
var response = new Array();
response[0] = new Object();
response[1] = ; // it's the same new Object()
response[2] = new Object();
你可以像以前那样迭代它:
$.each(response, function (index, obj)
$.each(obj, function (key, value)
console.log(key);
console.log(value);
);
);
【讨论】:
【参考方案2】:如果你尝试:console.log(response) ...你会看到数组是空的,看起来数组格式不正确。
为什么不使用 JSON 格式呢?
var response = [
"Id":"1",
"StreetAddress": "xxx",
"Place":"yyy"
,
"Id":"2",
"StreetAddress": "xxx2",
"Place":"yyy2"
,
"Id":"3",
"StreetAddress": "xxx3",
"Place":"yyy3"
]
console.log(response);
//you'll get an object: [Object Id="1", StreetAddress="xxx", Place="yyy", Object Id="2", StreetAddress="xxx2", Place="yyy2", Object Id="3", StreetAddress="xxx3", Place="yyy3"]
//iterate over
for(var x=0; x < response.length; x++)
console.log("ID: " + response[x].Id + " StreetAddress: " + response[x].StreetAddress + " Place: " + response[x].Place);
【讨论】:
【参考方案3】:您不应该在 Javascript 中使用这样的数组。数组是数字索引的。如果你写
response[1]["Id"] = 2;
您正在向 response[1] 数组添加一个属性
编辑 - 我读过你的评论好一点。它指出:
//仅供参考:输出是一个键数组 值对(例如 response[0].Id), 键是:
所以你有一个对象数组。
这会映射您将收到的数据。
var response = new Array;
response[0] = new Object();
response[1] = new Object();
response[2] = new Object();
response[0]["Id"] = 1;
response[0]["StreetAddress"] = 'xxx';
response[0]["Place"] = 'yyy';
response[1]["Id"] = 2;
response[1]["StreetAddress"] = 'xxx';
response[1]["Place"] = 'yyy';
response[2]["Id"] = 3;
response[2]["StreetAddress"] = 'xxx';
response[2]["Place"] = 'yyy';
您可以像这样访问它们:
jQuery.each(response, function(key, value)
for (key2 in value[key])
if (value[key].hasOwnProperty(key2))
alert(mine[key2])
);
【讨论】:
实际上,我想使用此服务:postcodeanywhere.co.uk/support/webservices/PostcodeAnywhere/… 在页面顶部,javascript 函数代码示例说: // PUT YOUR CODE HERE //FYI:输出是一个数组键值对(例如 response[0].Id),键是: //Id //StreetAddress //Place 所以我只是想构建一个示例数组,开始实现我的脚本。但是我的数组似乎是错误的。如果有人能给我正确的数组语法。谢谢 @Antoine 我修改了答案以上是关于如何使用 jQuery foreach 进入多维数组?奇怪的行为的主要内容,如果未能解决你的问题,请参考以下文章
如何使用php在foreach循环中获取多维数组的键? [复制]