我有一个看起来像这样的对象数组:

orders:
[
  0: {
    order_id: 234,
    text: 'foo'
  },
  1: {
    order_id: 567,
    text: 'bar'
  }
]


现在假设我的ID为234,我需要数组中的下一个对象

这是我的功能:

nextOrder() {
    return this.orders.sort(function(a,b) {
      return a.order_id == 234 ? 0 : (a.index < b.index ? -1 : 1)
    });
}


这给了我以下错误:


  “(评估中的错误)”

最佳答案

什么是a.index?你是说数组索引吗?

我认为您只想在数组中找到项目的索引,然后在下一个索引处获取对象:

nextOrder() {
  const index = this.orders.findIndex(order => order.order_id === 234)
  if (index === -1 || index === this.orders.length - 1) {
    // No such order or no next order
    return null
  }

  return this.orders[index + 1]
}


上一个顺序在索引index - 1,下一个顺序在索引index + 1。要检查任一顺序是否存在,您只需要检查索引是否在数组的边界内即可。只要i,索引0 <= i <= (orders.length - 1)就在数组的范围内。

如果index - 1 >= 0(不能为负索引)和index - 1 <= array.length - 1(不能大于数组的最后一个索引),则存在前一顺序。

09-25 17:38
查看更多