通过整数属性值对数组中的对象进行排序

时间:2018-04-03 14:24:27

标签: javascript ecmascript-6

有一个如下所示的数组:

[
  { 
    _id: 'xxnQt5X8pfbcJMn6i',
    order: 2
  },
  { 
    _id: 'X8pfbcJxxnQt5Mn6i',
    order: 1
  },
  { 
    _id: 'Qt5X8pfxxnbcJMn6i',
    order: 3
  }
]

现在我需要通过order值对此数组的对象进行排序。我试着这样做:

array.sort((a, b) => {
  return (a.order > b.order)
    ? 1
    : (b.order > a.order)
      ? -1
      : 0
})

但首先它看起来有点复杂,只是按整数值排序,然后它给我错误TypeError: Cannot assign to read only property '1' of object '[object Array]'

1 个答案:

答案 0 :(得分:2)

这可以使用Array.prototype.sort实现,不需要三元运算符的进一步返回条件,数组将隐式按第一个比较排序:

console.log([
  { 
    _id: 'xxnQt5X8pfbcJMn6i',
    order: 2
  },
  { 
    _id: 'X8pfbcJxxnQt5Mn6i',
    order: 1
  },
  { 
    _id: 'Qt5X8pfxxnbcJMn6i',
    order: 3
  }
].sort((a, b) => a.order - b.order))

我无法使用提供的示例重现您所获得的错误。