Javascript ES6 - 节点Js - 关联数组 - 对象使用 - 错误的默认顺序

问题描述 投票:0回答:3

我有一个问题,试图在节点中使用关联数组/对象,我有以下代码,我想得到我插入元素时使用的相同顺序。

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

我已经创建了一个并行动态结构来解决这个问题,但是我想要另一个解决方案或想法来获得这个目标。

问候。

里卡多。

node.js ecmascript-6 javascript-objects associative-array
3个回答
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]]);
}

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);
});

0
投票

nodejs数组只是将数字作为键的对象,并且一些函数添加到它们的原型中。还有。数组通常是两个数组,其值通过公共索引铰接在一起。例如: let a = [1,2,3]; let b = ["one","two","three"]; 也试图摆脱使用for循环查看数组。通过原型使用过多的功能。 for循环还遍历对象原型上的可枚举属性,因此for循环也会错误地迭代它。

© www.soinside.com 2019 - 2025. All rights reserved.