以下是代码段。
预期:警报的输出必须为:
210 then 202 then 201
目前工作:
201 then 202 and 210.
问题是,我想按插入顺序而不是按排序顺序。
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var newItem = new Array();
newItem['210'] = new Array(1,'test1');
newItem['202'] = new Array(2,'test1');
newItem['201'] = new Array(3,'test1');
for(var item in newItem) {
alert(item);
}
</script>
</body>
</html>
答案 0 :(得分:5)
如果您想使用广告订单和字符串作为键,请使用地图。
Map对象以插入顺序迭代其元素 - a for ... of loop为每次迭代返回一个[key,value]数组。
let newItem = new Map();
newItem.set('210', [1,'test1']);
newItem.set('202', [2,'test1']);
newItem.set('201', [3,'test1']);
for ( let item of newItem ) console.log(item);
答案 1 :(得分:2)
一些事情 - 数组每个索引槽有一个值,如下所示:
[1,2,3,4]
您在上面创建的是一个键/值对,在JavaScript中是一个对象 - 对象键具有无排序顺序 - 所以让它们进入它们被插入的顺序是不会发生的。你想要的是一个对象数组
var arr = [];
var obj = { '201' : [1, 'test1'] }
//create the rest of your objects
arr.push(obj);
另外请注意,当您迭代数组时,使用常规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
}
答案 2 :(得分:0)
使用可以设置密钥,即"210"
,"202"
,"201"
作为每个密钥的已创建数组的第一个元素;使用Array.of()
将创建的数组设置为元素;迭代在Array.of()
循环时使用for..of
创建的数组。 (可选)将Array.prototype.entries()
链接到已创建的数组,以确认包含key的已创建数组的索引作为数组中的第一个元素。
let items = Array.of(["210", 1, "test1"]
, ["202", 2, "test1"]
, ["201", 3, "test1"]);
for (let [key, value] of items.entries()) {
// do stuff
console.log(key, value)
};
答案 3 :(得分:-1)
根据您问题的预期输出,下面是一个非常简单的代码示例,说明您要实现的目标。
var newItem = [];
newItem.push('210');
newItem.push('202');
newItem.push('201');
newItem.forEach( value => console.log(value) )