我有这样的设置:
docs[0]['edits'] = 1;
docs[1]['edits'] = 2;
我想获得编辑次数最多的
docs[index]
。使用Underscore,我可以获得适当的数组(即值
docs[1]
),但是我仍然不知道与docs
相关的实际索引。_.max(docs, function(doc) { return doc['edits']; });
任何帮助将不胜感激。
最佳答案
要在没有库的情况下进行遍历,请遍历数组(可能使用reduce
),将迄今为止的最大数字和迄今为止的最高索引存储在变量中,并在被遍历的项较高时重新分配:
const edits = [
3,
4,
5,
0,
0
];
let highestNum = edits[0];
const highestIndex = edits.reduce((highestIndexSoFar, num, i) => {
if (num > highestNum) {
highestNum = num;
return i;
}
return highestIndexSoFar;
}, 0);
console.log(highestIndex);
另一种方法,使用
findIndex
,然后将edits
传播到Math.max
(更少的代码,但是需要迭代两次):const edits = [
3,
4,
5,
0,
0
];
const highest = Math.max(...edits);
const highestIndex = edits.indexOf(highest);
console.log(highestIndex);