首页 > 解决方案 > 根据数组对对象进行排序以生成排序数组

问题描述

对象在显示时不保证顺序,因此我必须将现有对象转换为数组,但请遵循顺序。

我有这个数组作为订单[1,2,3]

这是我的原始输入又名来源

{'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
})

我想我必须在循环中循环。

标签: javascriptarraysecmascript-6

解决方案


可以简单地映射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)


推荐阅读