JS功能:
function largestOfFour(arr) {
var biggest = 0;
var newArray = [];
for(var i = 0; i < arr.sort().reverse().length; i++){
for(var j = 0; j < arr[i].length; j++){
if(biggest < arr[i][j]){
biggest = arr[i][j]; // problem after this
//newArray.push(biggest); this will add the first element in each sub-array
// result [4,5,13,27,32,35,37,39,1000,1001]
}
}
}
return newArray;
}
largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
// Expected Output:
// [5, 27, 39, 1001]
我很难过。我如何添加或更改任何内容以获取每个子数组中的最大数字,并使用for-loops将该数字添加到newArray
?
答案 0 :(得分:3)
因为你想使用for循环:
var largestOfFour = (arr) => {
let largest = [];
for(let i = 0; i < arr.length; i++) {
largest[i] = arr[i].sort((a,b) => b-a)[0];
}
return largest;
}
这将做的是对内部数组进行排序并抓住第一个数组。
答案 1 :(得分:2)
您可以使用map()
代替for循环。
var arr = [[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]
function arrMax(data) {
return data.map(e => Math.max.apply(null, e))
}
console.log(arrMax(arr))
答案 2 :(得分:1)
您可以使用Math.max
的传播语法。
function arrMax(data) {
return data.map(a => Math.max(...a))
}
var arr = [[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]
console.log(arrMax(arr));
&#13;
答案 3 :(得分:0)
也许不是最好的,但这应该有用
function largestOfFour(series) {
return series.map(function (serie) {
return Math.max.apply(null, serie);
// return Math.max(...serie);
});
}
largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
答案 4 :(得分:0)
对于非常大的数组和子数组项目,我猜这将是最有效的..
var arr = [[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]],
res = arr.map(a => a.reduce((p,c) => p > c ? p : c));
console.log(res);
&#13;