Aus*_*sen 3 javascript arrays loops for-loop
我正在编写一个编码挑战来获取一个由子数组组成的给定数组,搜索每个子数组中最大的数字,最后返回一个只包含最大数字的新数组.我的思考过程是从每个子数组中创建变量,编写比较数组中每个值的for循环,然后将最大值推送到新数组.在编写了我的第一个for-loop之后,我测试了我的代码并看到我得到了一个意外的结果,即整个第一个子阵列被推入我的新数组中.在编写接下来的三个循环之前,我正在寻找错误.谢谢.编辑:这适用于初学者JavaScript编码器,建议表明在您的解决方案中使用比较运算符.
function largestOfFour(arr) {
var one = arr[0];
var two = arr[1];
var three = arr[2];
var four = arr[3];
var newArr = [];
for (var i = 0; i < one.length; i++){
var oneLrg = 0;
if (one[i] > oneLrg){
oneLrg = one[i];
}
newArr.push(oneLrg);
}
return arr;
}
console.log(largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]])); //This test case returns [4,5,1,3] instead of just [5]
Run Code Online (Sandbox Code Playgroud)
Ori*_*iol 12
使用>
:
var newArr = [];
for(var i=0; i<arr.length; ++i) { // Iterate array
var maximum = -Infinity; // Initial maximum
for(var j=0; j<arr[i].length; ++j) // Iterate subarrays
if(arr[i][j] > maximum) // Compare
maximum = arr[i][j]; // Update maximum
newArr.push(maximum); // Store the real maximum
}
Run Code Online (Sandbox Code Playgroud)
使用Math.max
:
var newArr = [];
for(var i=0; i<arr.length; ++i) { // Iterate array
var maximum = -Infinity; // Initial maximum
for(var j=0; j<arr[i].length; ++j) // Iterate subarrays
maximum = Math.max(maximum, arr[i][j]); // Update maximum
newArr.push(maximum); // Store the real maximum
}
Run Code Online (Sandbox Code Playgroud)
添加apply
:
var newArr = [];
for(var i=0; i<arr.length; ++i) // Iterate array
newArr.push( // Store ...
Math.max.apply(Math, arr[i]) // ... the maximum of the subarray
);
Run Code Online (Sandbox Code Playgroud)
添加ECMAScript 5 地图,
var newArr = arr.map(function(subarray) {
return Math.max.apply(Math, subarray);
});
Run Code Online (Sandbox Code Playgroud)
添加ECMAScript 5 绑定,
var newArr = arr.map(Function.apply.bind(Math.max, Math));
Run Code Online (Sandbox Code Playgroud)
var newArr = arr.map(subarray => Math.max(...subarray));
Run Code Online (Sandbox Code Playgroud)