基于数组排序对象以生成排序数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于数组排序对象以生成排序数组相关的知识,希望对你有一定的参考价值。

当我显示它时,对象不保证顺序,所以我必须将现有对象转换为数组,但是按照顺序。

我有这个数组作为命令[1,2,3]

这是我的原始输入aka源

{'2': 'two',
'3': 'three',
'1':'one'}

如何创建一个函数来生成一个新的数组,其中的顺序遵循上面的排序键?

我陷入了这个阶段

//expected 
['one', 'two', 'three']
const order = ['1', '2', '3']
const source = {
  '2': 'two',
  '3': 'three',
  '1': 'one'
}

let sorted = Object.keys(source).map(o => {
  //return order.includes(o) ? //what to do here : null
})

我想我必须在循环内做循环。

答案

可以简单地映射order数组并从source返回相应的值。除此之外的任何事情都使它复杂化

const order = ['1', '2', '3']
const source = {
  '2': 'two',
  '3': 'three',
  '1': 'one'
}

const sorted = order.map(n=>source[n])

console.log(sorted)
另一答案

您可以减少排序数组,并从源对象中查找相关的字符串。该方法仅使用一个循环,因此更有效。

const order = ['1', '2', '3', '4', '5'];
const source = {
  '2': 'two',
  '5': 'five',
  '3': 'three',
  '1': 'one',
  '4': 'four'
};

let sorted = order.reduce((obj, item) => {
  obj.push(source[item]);
  return obj;
}, []);

console.log(sorted);

以上是关于基于数组排序对象以生成排序数组的主要内容,如果未能解决你的问题,请参考以下文章

转换对象数组以在javascript中进行排序?

常见排序查找算法

如何使用以下代码根据实例变量对对象数组进行升序排序

基于对象属性对数组进行排序 - Javascript [重复]

javascript对象,php数组以键名排序

计数排序vs基数排序vs桶排序