迭代Javascript数组

迭代Javascript数组,javascript,arrays,Javascript,Arrays,我在google上找到了,但没有得到任何指导,所以在这里发布。我在javascript和ajax中使用json数组。我从controller获得json数组,如下所示: var response= {"6":{"id":"6"},"4":{"id":"4"}}; { 4:{ "id":"4" } 6:{ "id":"6" } }; 在javascript中迭代后,如: for (var i in response) { alert(r

我在google上找到了,但没有得到任何指导,所以在这里发布。我在javascript和ajax中使用json数组。我从controller获得json数组,如下所示:

var response= {"6":{"id":"6"},"4":{"id":"4"}};
{
   4:{
       "id":"4"
   }
   6:{
       "id":"6"
   }
};
在javascript中迭代后,如:

for (var i in response) {
   alert(response[i].id);
 }
数据顺序发生变化,即4,6。
在javascript内部,为什么它会更改数据的顺序。有什么建议吗。

不确定(z中的变量x)的顺序是什么。。 此外,IE不仅会返回数组中的项,还会返回一些数组函数/属性:(

根据我的经验,在javascript中大部分时间都应该避免使用(var x In z)for(至少对于数组)

请尝试使用此选项:

for (var i = 0; i < response.length; i++) {
   alert(response[i].id);
 }
for(变量i=0;i
不确定(z中的变量x)的
顺序。
此外,IE不仅会返回数组中的项,还会返回一些数组函数/属性:(

根据我的经验,在javascript中大部分时间都应该避免使用(var x In z)
for(至少对于数组)

请尝试使用此选项:

for (var i = 0; i < response.length; i++) {
   alert(response[i].id);
 }
for(变量i=0;i
不确定(z中的变量x)的
顺序。
此外,IE不仅会返回数组中的项,还会返回一些数组函数/属性:(

根据我的经验,在javascript中大部分时间都应该避免使用(var x In z)
for(至少对于数组)

请尝试使用此选项:

for (var i = 0; i < response.length; i++) {
   alert(response[i].id);
 }
for(变量i=0;i
不确定(z中的变量x)的
顺序。
此外,IE不仅会返回数组中的项,还会返回一些数组函数/属性:(

根据我的经验,在javascript中大部分时间都应该避免使用(var x In z)
for(至少对于数组)

请尝试使用此选项:

for (var i = 0; i < response.length; i++) {
   alert(response[i].id);
 }
for(变量i=0;i
使用标准for循环(您可以控制属性的顺序),而不是
for in
循环(它不按特定顺序获取属性)

for(变量i=0;i
使用标准for循环(您可以控制属性的顺序),而不是
for in
循环(它不按特定顺序获取属性)

for(变量i=0;i
使用标准for循环(您可以控制属性的顺序),而不是
for in
循环(它不按特定顺序获取属性)

for(变量i=0;i
使用标准for循环(您可以控制属性的顺序),而不是
for in
循环(它不按特定顺序获取属性)

for(变量i=0;i
任意顺序迭代对象的可枚举属性

请改用常规循环:

for (var i=0; i<response.length; i++) {
    alert(response[i].id);
}
以任意顺序迭代对象的可枚举属性

请改用常规循环:

for (var i=0; i<response.length; i++) {
    alert(response[i].id);
}
以任意顺序迭代对象的可枚举属性

请改用常规循环:

for (var i=0; i<response.length; i++) {
    alert(response[i].id);
}
以任意顺序迭代对象的可枚举属性

请改用常规循环:

for (var i=0; i<response.length; i++) {
    alert(response[i].id);
}
但for in不应与数组一起使用,而应仅用于对象。 无论如何,试试普通的旧自行车

var i =0;
for(i=0;i<response.length;i++){
  alert(response[i].id);
}
var i=0;
for(i=0;i在这里有效。但for in不应与数组一起使用,而应仅用于对象。
无论如何,试试普通的旧自行车

var i =0;
for(i=0;i<response.length;i++){
  alert(response[i].id);
}
var i=0;
for(i=0;i在这里有效。但for in不应与数组一起使用,而应仅用于对象。
无论如何,试试普通的旧自行车

var i =0;
for(i=0;i<response.length;i++){
  alert(response[i].id);
}
var i=0;
for(i=0;i在这里有效。但for in不应与数组一起使用,而应仅用于对象。
无论如何,试试普通的旧自行车

var i =0;
for(i=0;i<response.length;i++){
  alert(response[i].id);
}
var i=0;

对于(i=0;i您不应该在
中使用
for..迭代数组。请使用迭代方法

response.forEach(function (elem) {
    console.log(elem.id);
});

您不应该在
中使用
for..迭代数组。请使用迭代方法

response.forEach(function (elem) {
    console.log(elem.id);
});

您不应该在
中使用
for..迭代数组。请使用迭代方法

response.forEach(function (elem) {
    console.log(elem.id);
});

您不应该在
中使用
for..迭代数组。请使用迭代方法

response.forEach(function (elem) {
    console.log(elem.id);
});

你不应该像那样迭代数组

为什么? 在javascript中,一切都是一个对象,甚至是一个数组

for (var i in response)
是特定于对象的。因此它也适用于数组,但会将结果作为属性获取

for (var i in response)
    if(response.hasOwnProperty(i))
        alert(response[i].id);
属性是排序的或任意的,因此输出顺序很奇怪

此外,如果有人修改了
数组
对象的
协议,并添加了新属性,那么您将出现错误,您的代码肯定会崩溃

您可以使用
hasOwnProperty(i)

怎样? 你应该做:

for (var i = 0, iLength = response.length; i < iLength ; i++) {
   alert(response[i].id);
}
这里不需要
response.hasOwnProperty(i)
行,但是添加它是一种很好的做法

迭代对象属性不会保持顺序

要对元素进行排序,必须像第一个问题中那样制作一个数组,并对该数组进行排序

更新2: 当浏览器解释您的
响应时
变量将如下所示:

var response= {"6":{"id":"6"},"4":{"id":"4"}};
{
   4:{
       "id":"4"
   }
   6:{
       "id":"6"
   }
};
这是chrome的一个输出:

某些浏览器按属性名升序存储对象。因此,当您迭代对象时,它们将不按顺序存储是合乎逻辑的


目前您对此无能为力。

您不应该这样迭代数组

为什么? 在javascript中,一切都是一个对象,甚至是一个数组

for (var i in response)
是特定于对象的。因此它也适用于数组,但会将结果作为属性获取

for (var i in response)
    if(response.hasOwnProperty(i))
        alert(response[i].id);
他说,财产是分类的或任意的