我想找到最简洁的方法来查找数组中最大数字的索引。
例:
var array = [0,6,7,7,7];
该函数应返回[2,3,4]
注意:它与Return index of greatest value in an array不同
为什么?那里的答案只返回最大的答案之一。例如var array = [0,6,7,7,7]
将返回2或4。
更新: 不少人将此标记为重复问题。它不是!我解释了上面注释中的差异。在Return index of greatest value in an array中,我所要求的答案在哪里 我的第一个问题几乎立即被投票,我也感到沮丧。
找到另一个答案答案 0 :(得分:1)
function findLargestOccurances(){
//Sort the initial array to make it easier
var arr = [0,6,7,7,7].sort();
//The largest element is always at the end
var largest = arr[arr.length-1];
//The return array will hold positions of the largest element in the array
var retArr = [];
//Find occurances of the largest # in the array
arr.forEach(function(ele,idx){
//If the current element is the largest one, record the occurance index
if (ele === largest)
retArr.push(idx);
});
//Log the return array, open your browsers console to see the result!
console.log(retArr);
}
findLargestOccurances();
此功能也适用于混乱的元素!我在这里创建了一个代码笔:
答案 1 :(得分:0)
这非常接近Return index of greatest value in an array。
但是如果你想获取所有索引,你可以迭代数组,当前项目等于argmax
时将当前索引推送到max
数组,直到找到时刻;或者当您找到更多项目时更新max
和argmax
。
var max = -Infinity, argmax = [];
for(var i=0; i<array.length; ++i)
if(array[i] > max) max = array[i], argmax = [i];
else if(array[i] === max) argmax.push(i);
argmax; // [2,3,4]
答案 2 :(得分:0)
尝试以下代码。它会为您提供所需的输出
var array1=[0,6,7,7,7];
var array2=[];
var i = Math.max.apply(Math, array1);
for (var x = 0; x < array1.length; x++) {
if (array1[x] == i) {
array2.push(x);
}
}
var z = array2.toString();
var_dump(z);
&#13;