【问题标题】:How to sort array of object by a key if duplicate value is seen then sort them by another key in javascript?如果看到重复值,如何按键对对象数组进行排序,然后在 javascript 中按另一个键对它们进行排序?
【发布时间】:2021-07-21 14:13:33
【问题描述】:

我无法通过两个不同的键对一组对象进行排序。 我想按价格对这个数组进行排序,如果多个价格相同,则按时间对它们进行排序。我有一些类似这个数组的东西:

var myArr = [
{"value":5 , "price"=10, "time":3},
{"value":1.5 , "price"=2, "time":2},
{"value":3 , "price"=5, "time":4},
{"value":1 , "price"=2, "time":1}
]

排序后必须是这样的:

var myArr = [
{"value":1 , "price"=2, "time":1},
{"value":1.5 , "price"=2, "time":2},
{"value":3 , "price"=5, "time":4},
{"value":5 , "price"=10, "time":3}
]

我尝试了很多方法,但我无法解决它,因为它同时与两个键有关。

【问题讨论】:

标签: javascript arrays sorting


【解决方案1】:

你可以利用Array.sort先按price排序,再按time排序:

var myArr=[{value:5,price:10,time:3},{value:1.5,price:2,time:2},{value:3,price:5,time:4},{value:1,price:2,time:1}];

myArr.sort((a, b) => {
  return a.price - b.price || a.time - b.time;
});
console.log(myArr);

【讨论】:

  • 结果不是倒序吗?
  • @decpk 感谢您的通知。我已经更新了我的答案。
  • 这应该是const result = myArr.sort((a, b) => a.price - b.price || a.time - b.time)
  • 如果是重复的,你应该先把它标记为重复...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-28
  • 1970-01-01
  • 2019-06-11
  • 2023-02-03
  • 2016-12-23
  • 2021-10-30
相关资源
最近更新 更多