【问题标题】:Sort array of objects using value from object of arrays使用来自数组对象的值对对象数组进行排序
【发布时间】:2018-01-27 20:42:17
【问题描述】:

编辑:看来我想多了这个问题,并要求提供一个简单的Array.sort() 谢谢 Nina Scholz!

我有一个对象数组,我想按另一个对象的值排序,该对象的值是包含ts 的数组。我要排序的对象数组有一个id 引用,该引用包含要排序的ts 值,这些数组以最高ts 排序,始终位于[0] 位置。这里有一些sn-ps的代码来解释:

要排序的对象数组

[
  { id: 'abc' },
  { id: 'def' },
  { id: 'ghi' }
]

包含时间戳的数组对象

{
  abc: [{ ts: 6 }, { ts: 1 }],
  def: [{ ts: 4 }, { ts: 2 }],
  ghi: [{ ts: 5 }, { ts: 3 }]
}

预期的排序结果

[
  { id: 'abc' },
  { id: 'ghi' },
  { id: 'def' }
]

【问题讨论】:

  • 排序的逻辑是什么?
  • 你试过什么?你能附上你的代码吗?

标签: javascript arrays sorting object


【解决方案1】:

您可以取引用对象的第一项的值进行排序。

var array = [{ id: 'abc' }, { id: 'def' }, { id: 'ghi' }],
    object = { abc: [{ ts: 1 }, { ts: 6 }], def: [{ ts: 4 }, { ts: 2 }], ghi: [{ ts: 3 }, { ts: 5 }] };
    
array.sort((a, b) => object[a.id][0].ts - object[b.id][0].ts);

console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }

【讨论】:

  • 我很尴尬答案如此简单。谢谢你提醒我不要想太多!
猜你喜欢
  • 1970-01-01
  • 2020-04-13
  • 1970-01-01
  • 2013-11-25
  • 1970-01-01
  • 2011-08-18
相关资源
最近更新 更多