基于价格javascript订购对象数组

基于价格javascript订购对象数组,javascript,jquery,arrays,object,Javascript,Jquery,Arrays,Object,我想知道如何在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", pric

我想知道如何在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,
}]

可以很容易地实现

此函数返回已排序的数组,并且不更改原始数组

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);

为什么不使用排序?谢谢,但希望在对象数组中获得最大前3位添加
.slice(3)
,到已排序的数组中。更新了答案,将其也包括在内。
.slice(0,3)
-也修复了答案。它对@miyavv有帮助吗?是的,谢谢你的解决方案
var top3 = sorted.slice(0, 3);