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/