我在尝试在节点中使用关联数组/对象时遇到问题,我有以下代码,我想获得插入元素时使用的相同顺序。
var aa = []
aa[0] = 1
aa['second'] = 'pep'
aa['third'] = 'rob'
aa[4] = 2
for (var pos in aa) console.log (aa[pos])
但是内部节点首先放置/排序数字。
看实际执行:
1
2
pep
rob
我已经创建了一个并行的动态结构来解决这个问题,但是我想要另一个解决方案或想法来实现这个目标。
问候。
里卡多。
答案 0 :(得分:2)
首先,对于动态键,我建议使用字典而不是数组:
var aa = {};
元素列为默认顺序。您可以通过以下方式检查其默认顺序:
var keys = Object.keys(aa);
for (var i = 0; i < keys.length; i++) {
console.log(keys[i]);
}
如果在插入元素时需要默认顺序作为相同的顺序,请尝试将此插入顺序保存在另一个数组中:
var aa = {};
var keys = [];
aa[0] = 1
keys.push(0);
aa['second'] = 'pep'
keys.push('second');
aa['third'] = 'rob'
keys.push('third');
aa[4] = 2
keys.push(4);
for (var i = 0; i < keys.length; i++) {
console.log(aa[keys[i]]);
}
答案 1 :(得分:2)
您可能还想尝试一些ES6功能。鉴于您希望将数据存储在类似哈希的数据结构中,以保留我建议尝试Map的顺序:
var map = new Map();
map.set(0, 1);
map.set('second', 'pep');
map.set('third', 'rob');
map.set(4, 2);
for (var [key, value] of map) {
console.log(key, value);
}
map.forEach(function (value, key) {
console.log(key, value);
});
答案 2 :(得分:0)
nodejs数组只是数字作为键的对象,而一些函数则添加到原型中。还有。数组通常是两个数组,其值通过公共索引铰接在一起。例如:
let a = [1,2,3];
let b = ["one","two","three"];
也试图摆脱使用for循环查看数组。通过原型使用过多的功能。 for循环还遍历对象原型上的可枚举属性,因此for循环也会错误地迭代它。