javascript中的数组未按键插入顺序打印

javascript中的数组未按键插入顺序打印,javascript,arrays,Javascript,Arrays,下面是代码片段 预期:警报的输出必须为: 210 then 202 then 201 目前正在工作: 201 then 202 and 210. 问题是,我想要按插入顺序,而不是按排序顺序 var newItem=新数组(); newItem['210']=新数组(1,'test1'); newItem['202']=新数组(2,'test1'); newItem['201']=新数组(3,'test1'); for(新项目中的var项目){ 警报(项目); } 几件事-数组每个索引槽

下面是代码片段

预期:警报的输出必须为:

210 then 202 then 201
目前正在工作:

201 then 202 and 210.
问题是,我想要按插入顺序,而不是按排序顺序



var newItem=新数组(); newItem['210']=新数组(1,'test1'); newItem['202']=新数组(2,'test1'); newItem['201']=新数组(3,'test1'); for(新项目中的var项目){ 警报(项目); }
几件事-数组每个索引槽有一个值,如下所示:

[1,2,3,4]
您在上面创建的是一个键/值对,它在JavaScript中是一个对象-对象键没有排序顺序-因此按插入顺序获取它们是不可能的。您需要的是一个对象数组

另一个注意事项是,当您迭代数组时,使用常规的
for
语法-当您迭代对象时,使用
for..in

for (var i = 0; i < arr.length; i++) {
    var objKeys = Object.keys(arr[i]); //get the keys of the object being iterated over
    console.log(objKeys[0]); //log the first key (since your objects only have 1 key
}
for(变量i=0;i
下面是一个非常简单的代码示例,根据您的问题的预期输出,说明您试图实现的目标

var newItem=[];
newItem.push('210');
newItem.push('202');
newItem.push('201');

newItem.forEach(value=>console.log(value))
如果要使用插入顺序,并使用字符串作为键,请使用映射

贴图对象以插入顺序迭代其元素,以表示…的 循环为每次迭代返回一个[key,value]数组

让newItem=newmap();
newItem.set('210',[1,'test1']);
newItem.set('202',[2,'test1']);
newItem.set('201',[3,'test1']);

for(let item of newItem)console.log(item);
Use可以设置键,即
“210”
“202”
“201”
作为每个键所创建数组的第一个元素;使用
array.of()
将创建的数组设置为元素;迭代使用
array.of()创建的数组
处,用于
循环的..。可以选择使用链接到已创建数组的
数组.prototype.entries()
来确认已创建数组的索引,该数组包含键作为数组中的第一个元素

let items=Array.of([“210”,1,“test1”]
,[“202”,2,“测试1”]
,[“201”,3,“test1”];
for(让items.entries()的[key,value]{
//做事
console.log(键、值)

}
数组是有序的。当你直接添加到索引中时,为什么你希望保留插入顺序?我甚至不知道有任何语言可以保留插入顺序。另外,在对数组进行迭代时,不要使用
for…in
我也不会使用
new Array()
var newItem=[]
然后
newItem.push(…);
@Sharad请记住接受任何有助于您解决问题的答案,以便其他人将来可以从您的问题中学习。在ES6中,您可以使用
for…of
循环或
forEach()
迭代数组。对于循环,不再需要使用常规
了。在ES6成为标准之前,我会坚持使用常规循环。你在开玩笑吗?ES6是2015年6月定稿以来的标准。这是我的一个非常糟糕的选择-很抱歉-基本上归结为我不能使用它,因为浏览器支持。@Gothdo-我们大多数人仍然需要编写适用于大多数人的代码。ES2015在现代浏览器中几乎不起作用,在旧浏览器中也根本不起作用,而且我不会在客户端的生产中使用。实际上,我认为ES5答案仍然更可取,但我自己用ES2015解决方案来回答,因为这似乎是ac这几天是可以接受的。请问,为什么要对OP想要的
210然后202然后201
var arr = [];
var obj = { '201' : [1, 'test1'] }
//create the rest of your objects
arr.push(obj);
for (var i = 0; i < arr.length; i++) {
    var objKeys = Object.keys(arr[i]); //get the keys of the object being iterated over
    console.log(objKeys[0]); //log the first key (since your objects only have 1 key
}