Javascript:查找第二次出现(最后)的最大数字&返回不同数组

时间:2016-05-28 05:49:32

标签: javascript arrays

我有一个数组,其中出现两次最大数字。我想在findSum数组中得到第二次出现的最大数,所以索引[3],然后返回另一个数组的索引[3],数字。

findSum = [49, 81, 81, 64];

Function findLargest(arr) { 
var largest = Math.max.apply(Math, arr);
return largest;  
};
console.log(findLargest(findSum));

var numbers = ['4916-2600-1804-0530', '4779-252888-3972', 
'4252-278893-7978', '4556-4242-9283-2260'];

现在我正在使用Math.max找到最大的,我想我只是返回第一次出现,81的索引[2]。旁注:你如何检查哪81个返回?提前谢谢!

4 个答案:

答案 0 :(得分:0)

此函数将查找数组中的最大数字和数组中最大数字的最后一个索引。

function findLastIndexOfLargestNumber(array){
    var maxNum = Number.MIN_VALUE;
    var maxNumIndex = 0;
    for(var i = 0; i < array.length; i++){
        var currentNumber = array[i];
        if(currentNumber >= maxNum){
            maxNum = currentNumber;
            maxNumIndex = i;
        }
    }
    return { maxNum : maxNum, maxNumIndex : maxNumIndex };
}

console.log(findLastIndexOfLargestNumber([49, 81, 81, 64]));

答案 1 :(得分:0)

您可以使用Array.lastIndexOf,因为数组从零开始,所以会返回index[2]

var findSum = [49, 81, 81, 64];

function findLastLargest(arr) {
    var largest = Math.max.apply(Math, arr);
    return arr.lastIndexOf(largest);
}

var numbers = ['4916-2600-1804-0530', '4779-252888-3972',
    '4252-278893-7978', '4556-4242-9283-2260'
]

console.log(numbers[findLastLargest(findSum)])

答案 2 :(得分:0)

您可以使用数组的lastIndexOf功能。

findSum = [49, 81, 81, 64];

Function findLargest(arr) { 
var largest = Math.max.apply(Math, arr);
return largest;  
};
console.log(findSum.lastIndexOf(findLargest(findSum)));

var numbers = ['4916-2600-1804-0530', '4779-252888-3972', 
'4252-278893-7978', '4556-4242-9283-2260'];

答案 3 :(得分:0)

一条捷径。

var findSum = [49, 81, 81, 64],
    numbers = ['4916-2600-1804-0530', '4779-252888-3972',
    '4252-278893-7978', '4556-4242-9283-2260'],
     number = numbers[findSum.lastIndexOf(Math.max(...findSum))];
console.log(number);