猿问

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

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


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)

    });

}

这给了我以下错误:


“(评估期间的错误)”


慕慕森
浏览 430回答 3
3回答

潇潇雨雨

是什么a.index?你的意思是数组索引?我想你只是想在数组中找到项目的索引,然后在下一个索引处取对象:nextOrder() {&nbsp; const index = this.orders.findIndex(order => order.order_id === 234)&nbsp; if (index === -1 || index === this.orders.length - 1) {&nbsp; &nbsp; // No such order or no next order&nbsp; &nbsp; return null&nbsp; }&nbsp; 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(不能大于数组的最后一个索引),则存在前一个顺序。

RISEBY

试试下面的代码,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;id&nbsp;=&nbsp;234;&nbsp;//&nbsp;your&nbsp;id &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;index&nbsp;=&nbsp;this.orders.findIndex(order&nbsp;=>&nbsp;order.some_id&nbsp;===&nbsp;id); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(this.orders[index&nbsp;+&nbsp;1]);&nbsp;//&nbsp;give&nbsp;you&nbsp;the&nbsp;next&nbsp;object

慕尼黑5688855

你可以简单地使用findIndexlet arr = [{order_id: 234, text: 'foo'},{ order_id: 567, text: 'bar'}]let findNextOrder = (id) => {&nbsp; let index = arr.findIndex(({ order_id }) => order_id === id)&nbsp; return index > -1 && index < arr.length - 1 ? arr[index + 1] : undefined}console.log(findNextOrder(234))您不需要根据您对问题的评论进行排序,您的对象上也没有名为 index 的属性。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答