20 lines
470 B
JavaScript
20 lines
470 B
JavaScript
|
import ascending from "./ascending.js";
|
||
|
import maxIndex from "./maxIndex.js";
|
||
|
|
||
|
export default function greatestIndex(values, compare = ascending) {
|
||
|
if (compare.length === 1) return maxIndex(values, compare);
|
||
|
let maxValue;
|
||
|
let max = -1;
|
||
|
let index = -1;
|
||
|
for (const value of values) {
|
||
|
++index;
|
||
|
if (max < 0
|
||
|
? compare(value, value) === 0
|
||
|
: compare(value, maxValue) > 0) {
|
||
|
maxValue = value;
|
||
|
max = index;
|
||
|
}
|
||
|
}
|
||
|
return max;
|
||
|
}
|