javascript - 如何在 JavaScript 中从数组的每个数组中返回两个最大的数字而不使用 for 循环?

标签 javascript arrays

    function theHighest(data) {
        let twoLargest = data.map((x) => {
            return x.reduce((prev, curr) => {
                return curr
            })
        })
        return twoLargest //returns [3,5,8]
    
    }
    console.log(theHighest([[1, 2, 3], [3, 4, 5], [6, 7, 8]]))

上面的函数可以返回每个数组中最大的数字,如果它可以在同一个数组中返回 prev 和 curr ,那么工作就完成了,并且可以达到期望的结果,即 [2,3,4,5, 7,8] 我怎样才能在不使用 for 循环的情况下返回它?

如果我使用 for 循环,我是这样做的:

    function theHighest(data) {
        let highestValues = []
    
        for (let i = 0; i < data.length; i++) {
            let first = 0
            let second = 0
             
            for (let j = 0; j < data[i].length; j++) {
                    if (first < data[i][j]) {                  
                        second = first;
                        first = data[i][j];
                    }
                    else if (second < data[i][j]) {                   
                        second = data[i][j];
                    }
    
            }
            highestValues.push(first, second)
        }    
    return highestValues
        }
    console.log(theHighest([[1, 2, 3], [3, 4, 5], [6, 7, 8]]))

谢谢!

最佳答案

您可以复制一份,对数组进行排序并返回两个最大值。

function theHighest(data) {
    return [].concat(...data.map(a => a.slice().sort((a, b) => a - b).slice(-2)));
}

console.log(theHighest([[1, 2, 3], [3, 4, 5], [6, 7, 8]]));

关于javascript - 如何在 JavaScript 中从数组的每个数组中返回两个最大的数字而不使用 for 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48743895/

相关文章:

javascript - 在 Mocha 上循环()

c - 将 C 指针交换为函数内的函数

带有 OpenMP 的 C++ 尽量避免紧密循环数组的错误共享

javascript - 将对象数组转换为 Google Charts 数组

javascript - 将 Canvas 数据上传到 s3

javascript - 表格不同单元格上的工具提示

javascript - 我可以在 Mongo Shell Javascript 文件中读取 csv 文件吗?

javascript - 如何更改结果在此字符分类器代码中的显示方式?

java - Scala 中的多维数组

Java:从 JSON 解析数组的数组