这是我目前的代码:
var largestNumbers = new Array(4);
function largestOfFour(arr) {
var biggest = Math.max.apply(null, largestOfFour)
for (var index in arr) {
for(var i=0; i < arr[index].length; i++){
if (arr[index] > biggest){
arr[index].push(largestNumbers);
}
else if (arr[index] < biggest) {
arr[index].splice(0, 1);
}
}
}
return largestNumbers;
}
largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
我的目标是找到每个子数组中的最大数字,然后将这些值放入另一个数组中,然后返回该值。我一直在寻找类似于&#34;如何从数组中提取子数组的内容&#34;这导致我使用拼接功能。我不确定我是否正确使用它,但我尝试了所有我得到的东西,因为我已经被困在这个问题上2天了。如果有人能引导我走上解决这个问题的道路,我将不止感激。非常感谢你们。
此外,我正在使用这个网站来引导我。有一段代码尝试解决与页面后半部分类似的问题。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply
答案 0 :(得分:4)
var largest = function largest(arr) {
return arr.map(function(arr) {
return Math.max.apply(null, arr);
});
};
答案 1 :(得分:1)
function largestOfFour(arr) {
return arr.map(function(array) {
return Math.max.apply(Math, array)
});
}
var myArray = [
[4, 5, 1, 3],
[13, 27, 18, 26],
[32, 35, 37, 39],
[1000, 1001, 857, 1]
];
console.log(largestOfFour(myArray));
答案 2 :(得分:1)
应用简单的嵌套循环逻辑。
function largestOfFour(arr) {
var maxArray = [];
for(var i = 0; i < arr.length; i++) {
var maxE = 0;
for(var j = 0; j < arr.length; j++) {
if(maxE < arr[i][j]) {
maxE = arr[i][j];
}
}
maxArray.push(maxE);
}
arr = maxArray;
return arr;
}
largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
或试试这个
function largestOfFour(arr) {
var maxArray = [];
for(var i = 0; i < arr.length; i++) {
var maxE = Math.max(...arr[i]); // this spread is only available in ES6 so can be replaced by --> Math.max.apply(null, arr[i])
maxArray.push(maxE);
}
arr = maxArray;
return arr;
}
largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
答案 3 :(得分:0)
答案 4 :(得分:0)
@QueryParam
答案 5 :(得分:0)
即使您也可以这样编码,也可以创建一个新的数组
function largestOfFour(arr) {
// You can do this!
var newArray=[];
for(i=0;i<arr.length;i++){
newArray.push(Math.max.apply(Math,arr[i]));
}
return newArray;
}
largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
答案 6 :(得分:-1)
var largestNumbers = new Array();
function largestOfFour(arr) {
for (var i = 0 ; i< arr.length; i ++) {
largestNumbers.push(Math.max.apply(Math, arr[i]));
}
}
largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
答案 7 :(得分:-1)
使用Math.max.apply()的方法,您可以使用一个循环遍历数组作为参数;
function largestOfFour(arr){
var result = [];
for(var i = 0 ; i < arr.length ; i++){
result[i] = Math.max.apply(null, arr[i]);
}
return result;
}
编辑: 由于@Jeff Shaver发布了simpler solution,您应该使用map函数返回结果数组。