我想使用ES6 findIndex()
方法返回最高数字。我怎么做?在下面的这个例子中,我只想返回ID最高的索引。
let index = context.state.locations.findIndex((l) => {l.id ?????? });
答案 0 :(得分:3)
您可以使用Array#reduce
方法进行简单的解决方案。使用Array#findindex
会更复杂。
将初始值设置为0
(起始索引)假设第一个元素包含较大的id
值。在回调中比较当前较大的id值(基于当前maxIndex)与当前元素和基于较大值的返回索引。
let index = context.state.locations.reduce((maxIndex, obj, curIndex, arr) => arr[maxIndex].id < obj.id ? curIndex : maxIndex, 0);
var arr = [{
id: 23
}, {
id: 2
}, {
id: 27
}, {
id: 5
}, {
id: 58
}, {
id: 50
}];
let index = arr.reduce((maxIndex, obj, curIndex, arr) => arr[maxIndex].id < obj.id ? curIndex : maxIndex, 0);
console.log(index);
&#13;
答案 1 :(得分:1)
您必须检查所有项目以获得更高的id
并使用Array#reduce
。
var array = [{ id : 3 }, { id : 42 }, { id : 2 }, { id : 15 }, { id : 13 }, { id : 99 }, { id : 1 }],
index = array.reduce( (r, a, i, aa) => aa[r].id > a.id ? r : i, 0);
console.log(index);
console.log(array[index]);
&#13;