首页 > 解决方案 > 循环遍历数组并将每个元素设置为对象的属性会导致顺序混乱

问题描述

我有一个包含一些 ID 的数组:

let ids = [ '184', '085', '241', '086', '087', '165' ];

和一个空的对象 -let data = {};

我正在遍历数组并将每个元素设置为对象的属性:

ids.forEach(id => {
    data[id] = '';
});

我希望数据对象是:

{ '184': '', '085': '', '241': '', '086': '', '087': '', '165': '' }

但是当我console.log(data)发现属性的顺序被弄乱了并且data是:

{ '165': '', '184': '', '241': '', '085': '', '086': '', '087': '' }

我也尝试使用这种方法循环遍历数组:

for (let id of ids) {
    data[id] = '';
}

但同样的混乱订单结果。我需要知道如何以正确的顺序设置属性,更重要的是,是什么导致了这个问题。

标签: javascriptarraysloopsobjectproperties

解决方案


您需要使用 aMap来维护插入顺序。对象键按插入顺序排列,但数字键按升序排列。

let ids = [ '184', '085', '241', '086', '087', '165' ];
const map = new Map;
ids.forEach(id => map.set(id, ''));
map.forEach((val,key)=>console.log(key,'=',val));


推荐阅读