【问题标题】:order the object array based on price javascript [duplicate]根据价格javascript订购对象数组[重复]
【发布时间】:2020-01-21 02:15:32
【问题描述】:

我想知道如何在 javascript 中根据价格(从最大值到最小值)订购前 3 个对象数组。

var obj =[{
  id: "1",
  price: 20
},{
  id: "2",
  price: 50,
},{
 id: "3",
 price: 100
},{
  id: "4",
  price: 30
},{
  id: "5",
  price: 80
}]

预期输出

result = [{
  id: "3",
  price: 100
 },{
  id: "5",
  price: 80
},{
  id: "2",
  price: 50,
}]

【问题讨论】:

标签: javascript jquery arrays object


【解决方案1】:

可以通过Array.prototype.sort()轻松实现。

这个函数返回一个排序好的数组,并且不改变原来的。

var obj =[{
  id: "1",
  price: 20
},{
  id: "2",
  price: 50,
},{
 id: "3",
 price: 100
},{
  id: "4",
  price: 30
},{
  id: "5",
  price: 80
}]

function compare(a, b) {
  if(a.price > b.price)
     return 1;
  if(a.price < b.price)
     return -1;
  // Equals
  return 0;
}

var sorted = obj.sort(compare);

检查结果,您可能需要在return 1return -1 之间切换。老实说,我不记得哪个是升序或降序:facepalm:

现在,如果您想获得前 3 名,只需对数组进行切片

var top3 = sorted.slice(0, 3);

【讨论】:

  • 谢谢,但希望在对象数组中获得最大前 3 名
  • .slice(3) 添加到已排序的数组中。更新了答案以包含它。
  • .slice(0, 3) - 也是固定答案。对@miyavv 有帮助吗?
  • 是的,感谢您的解决方案
猜你喜欢
  • 2017-01-21
  • 2011-03-12
  • 2021-09-09
  • 1970-01-01
  • 2018-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多