我有一个问题,试图在节点中使用关联数组/对象,我有以下代码,我想得到我插入元素时使用的相同顺序。
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
我已经创建了一个并行动态结构来解决这个问题,但是我想要另一个解决方案或想法来获得这个目标。
问候。
里卡多。
首先,我建议使用字典而不是数组,用于动态键:
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]]);
}
您可能还想尝试一些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);
});
nodejs数组只是将数字作为键的对象,并且一些函数添加到它们的原型中。还有。数组通常是两个数组,其值通过公共索引铰接在一起。例如:
let a = [1,2,3];
let b = ["one","two","three"];
也试图摆脱使用for循环查看数组。通过原型使用过多的功能。 for循环还遍历对象原型上的可枚举属性,因此for循环也会错误地迭代它。