我有一个这样的数组:
var startArray = [
{value: 2, label: 'label 2'},
{value: 1, label: 'label 1'},
{value: 17, label: 'label 17'},
{value: 15, label: 'label 15'}
];
我想创建这样的对象:
var middleObject = {
2: 'label 2',
1: 'label 1',
17: 'label 17',
15: 'label 15'
};
我使用了代码:
startArray.forEach( function(oneOption) {
middleObject[oneOption.value] = oneOption.label;
});
enter code here
我也尝试使用此代码(结果相同):
for (var oneOption in startArray) {
middleObject[oneOption.value] = oneOption.label;
}
但问题是,当我使用这个代码时,我采取这样的对象:
var middleWrongObject = {
1: 'label 1',
2: 'label 2',
15: 'label 15',
17: 'label 17'
};
但稍后我应该在循环中使用middleObject
,使用与firstArray
相同的顺序。每次middleObject
内的属性都应该是数字类型。我们是否有一些方法可以在middleObject
内设置属性的排序(没有set属性"排序"稍后按此字段排序)
谢谢你的帮助。
答案 0 :(得分:1)
您可以在给定排序键的部分中拆分给定数组,并使用对象作为数据的引用。
var startArray = [{ value: 2, label: 'label 2' }, { value: 1, label: 'label 1' }, { value: 17, label: 'label 17' }, { value: 15, label: 'label 15' }],
keys = startArray.map(a => a.value),
object = Object.assign(...startArray.map(a => ({ [a.value]: a.label })));
keys.sort((a, b) => a - b); // keys in asc order
console.log(keys.map(k => object[k])); // access via keys
console.log(object);