我想有一个返回数组最大值的函数。我知道这个问题被问过很多次,但是在一个数组中有一个最大值以上的情况下怎么办?假设我们的数组如下所示:
var arr = [1,10,2,10];
功能:
arr.indexOf(Math.max.apply(Math, arr) );
只返回索引1,但我想得到1和3。
什么是最短,最有效的方法。
const largest = Math.max(...arr);
arr.reduce((indexes, n, index) => {
return indexes.concat(n === largest ? [index] : []);
}, []);
或者,如果ES5是您的最佳选择:
var largest = Math.max.apply(Math, arr);
arr.reduce(function(indexes, n, index) {
return indexes.concat(n === largest ? [index] : []);
}, []);
或者,如果通用函数是您的事:
function findAllIndexes(arr, val) {
return arr.reduce((indexes, element, index) => {
if(element === val) {
return indexes.concat([element]);
} else {
return indexes;
}
}, []);
}
findAllIndexes(arr, Math.max(..arr));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句