为了账号安全,请及时绑定邮箱和手机立即绑定

Javascript 根据属性值从对象数组中获取下一个对象

Javascript 根据属性值从对象数组中获取下一个对象

慕慕森 2022-06-16 15:39:35
我有一个看起来像这样的对象数组:orders:[  0: {    order_id: 234,    text: 'foo'  },  1: {    order_id: 567,    text: 'bar'  }]现在假设我有 id234并且我需要数组中的下一个对象这是我的功能:nextOrder() {    return this.orders.sort(function(a,b) {      return a.order_id == 234 ? 0 : (a.index < b.index ? -1 : 1)    });}这给了我以下错误:“(评估期间的错误)”
查看完整描述

3 回答

?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

是什么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 处index - 1,下一个订单在 index 处index + 1。要检查任一顺序是否存在,您只需要检查索引是否在数组的范围内。i只要 ,索引就在数组的范围内0 <= i <= (orders.length - 1)。


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


查看完整回答
反对 回复 2022-06-16
?
RISEBY

TA贡献1856条经验 获得超5个赞

试试下面的代码,

        let id = 234; // your id
        let index = this.orders.findIndex(order => order.some_id === id);
                console.log(this.orders[index + 1]); // give you the next object


查看完整回答
反对 回复 2022-06-16
?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

你可以简单地使用findIndex


let arr = [{order_id: 234, text: 'foo'},{ order_id: 567, text: 'bar'}]


let findNextOrder = (id) => {

  let index = arr.findIndex(({ order_id }) => order_id === id)

  return index > -1 && index < arr.length - 1 ? arr[index + 1] : undefined

}


console.log(findNextOrder(234))


您不需要根据您对问题的评论进行排序,您的对象上也没有名为 index 的属性。


查看完整回答
反对 回复 2022-06-16
  • 3 回答
  • 0 关注
  • 429 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信