Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用jQuery将foreach转换为多维数组?奇怪的行为_Javascript_Jquery_Arrays_Multidimensional Array_Each - Fatal编程技术网

Javascript 如何使用jQuery将foreach转换为多维数组?奇怪的行为

Javascript 如何使用jQuery将foreach转换为多维数组?奇怪的行为,javascript,jquery,arrays,multidimensional-array,each,Javascript,Jquery,Arrays,Multidimensional Array,Each,如果有人能解释为什么alertbox不返回数组而是空的话 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"

如果有人能解释为什么alertbox不返回数组而是空的话

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服务中得到这种数组,我需要循环到这个数组中来检索数据

但我不明白为什么循环不能正常工作


提前感谢各位。

在Javascript中不应该使用这样的数组。数组以数字索引。如果你写信

response[1]["Id"] = 2; 
您正在向响应[1]数组添加属性

编辑-我对你的文章读得好一点。它说:

//仅供参考:输出是一个密钥数组 值对(例如,响应[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])
            }
         }
     });

这不是多维数组,而是无效代码<代码>数组和
对象
(散列)与php不同

因此,您应该在顶部写下以下内容:

var response = new Array();
response[0] = new Object();
response[1] = {}; // it's the same
response[2] = new Object();
您可以像以前一样对其进行迭代:

$.each(response , function( index, obj ) {
    $.each(obj, function( key, value ) {
        console.log(key);
        console.log(value);
    });
});
如果您尝试:console.log(响应)。。。您将看到数组为空,似乎数组的格式不正确

为什么不改用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);
}
var响应=[{
“Id”:“1”,
“街道地址”:“xxx”,
“地点”:“yyy”
},
{
“Id”:“2”,
“街道地址”:“xxx2”,
“地点”:“yyy2”
},
{
“Id”:“3”,
“街道地址”:“xxx3”,
“地点”:“yyy3”
}
]
控制台日志(响应);
//您将得到一个对象:[object{Id=“1”,StreetAddress=“xxx”,Place=“yyy”},object{Id=“2”,StreetAddress=“xxx2”,Place=“yyyy2”},object{Id=“3”,StreetAddress=“xxx3”,Place=“yyyy3”}]
//反复
对于(var x=0;x
实际上,我想使用这个服务:在页面顶部,javascript函数代码示例说://PUT YOUR code HERE//FYI:输出是一个键值对数组(例如,response[0].Id),键是://Id//StreetAddress//Place,所以我只是尝试构建一个示例数组,以便开始实现我的脚本。但我的数组似乎是错误的。如果有人能给我数组的正确语法。Thanks@Antoine我修改了答案