我有这样的设置:

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

10-06 01:36