【发布时间】:2016-11-02 19:18:39
【问题描述】:
我正在使用 lodash mapKeys 获取我的对象数组并使用 id 属性将其转换为映射对象。这很简单,但问题是它按id 对新对象进行排序。
例如,如果我的数组中有三个对象:
let myArray = [
{
id: 3,
name: 'Number Three'
},
{
id: 1,
name: 'Number One'
},
{
id: 2,
name: 'Number Two'
}
];
然后我通过id映射键:
_.mapKeys(myArray, 'id')
它返回以下内容:
{
1: {
id: 1,
name: 'Number One'
},
2: {
id: 2,
name: 'Number Two'
},
3: {
id: 3,
name: 'Number Three'
}
}
我的服务器以特定顺序返回数组,所以我希望对象保持不变,这样当我遍历对象属性时,它们的顺序正确。
用这种方法可以吗?如果没有,是否有可能的替代方案来实现结果?
【问题讨论】:
-
这实际上是原生 javascript 行为。
var o = {}; o[3] = 3; o[1] = 1;产生 o:{1: 1, 3: 3}为什么这会给您带来问题?如果您要遍历整个列表,则不需要地图格式,如果您通过键 ID 访问对象,则顺序无关紧要。 -
啊,所以如果没有排序就无法排列对象的属性?
-
@TomNolan JS 对象不是有序数据结构。
-
@WilliamB 这不是“JSON 表示法”,而是“对象文字”。
-
如果地图和数组引用相同的对象,则不会。
标签: javascript underscore.js lodash