javascript - 从数组创建对象,像数组内部一样严格排序

标签 javascript arrays object

我有一个像这样的数组:

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里面的属性每次都应该是number类型。我们是否有一些方法来设置 middleObject 内部属性的排序(无需设置属性“ordering”并稍后按此字段排序) 感谢您的帮助。

最佳答案

您可以将给定数组拆分为排序键的一部分,并使用对象作为数据的引用。

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

关于javascript - 从数组创建对象,像数组内部一样严格排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43909380/

相关文章:

javascript - Yesod:在 AJAX 调用中使用类型安全的 URL

javascript - Backbone.js 非常简单的验证模型不起作用 - 遵循 webtuts 教程

arrays - 使用Excel VBA在多维数组中查找(而不是删除)重复值(行)

javascript - Vue.js 导入对象

javascript - 我需要一些关于 javascript 对象的指导

javascript - 如何构建一个查询,根据另一列对数据库中的分数进行平均

javascript - 如何在 href 中使用 JavaScript 变量?

C++ 多维数组

java - 对创建对象感到困惑

json - 在jsp中处理json对象