ES6 findIndex返回最高编号

时间:2017-01-18 10:18:31

标签: javascript ecmascript-6

我想使用ES6 findIndex()方法返回最高数字。我怎么做?在下面的这个例子中,我只想返回ID最高的索引。

let index = context.state.locations.findIndex((l) => {l.id ??????  });

2 个答案:

答案 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);

&#13;
&#13;
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;
&#13;
&#13;

答案 1 :(得分:1)

您必须检查所有项目以获得更高的id并使用Array#reduce

&#13;
&#13;
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;
&#13;
&#13;