[英]Javascript get the next object from an array of objects based on a propery value
我有一个看起来像这样的 object 数组:
orders:
[
0: {
order_id: 234,
text: 'foo'
},
1: {
order_id: 567,
text: 'bar'
}
]
现在假设我有 id 234
并且我需要数组中的下一个 object
这是我的 function:
nextOrder() {
return this.orders.sort(function(a,b) {
return a.order_id == 234 ? 0 : (a.index < b.index ? -1 : 1)
});
}
这给了我以下错误:
“(评估期间的错误)”
什么是a.index
? 你的意思是数组索引?
我想你只是想在数组中找到项目的索引,然后在下一个索引处取 object:
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
处。 要检查任一顺序是否存在,您只需要检查索引是否在数组的范围内。 只要0 <= i <= (orders.length - 1)
,索引i
就在数组的范围内。
如果index - 1 >= 0
(不能是负索引)并且index - 1 <= array.length - 1
(不能大于数组的最后一个索引),则存在先前的顺序。
您可以简单地使用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))
您不需要根据您对问题的评论进行排序,object 上也没有名为 index 的属性。
试试下面的代码,
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.