Javascript 嵌套循环后返回结果
我正试图找出如何让下面的代码将biggestNumber变量推送到largestNumbers变量,以便将largestoff的每个子数组中的最大数字作为largestNumbers数组返回 我在心里看到了这一点,认为我写的代码是正确的。这是我的思考过程: 1) LargestNumber设置为空数组 2) 创建一个for循环,该循环将在循环期间拉动每个子数组,并将其存储为PulledSubArray 3) 我需要在子数组中循环(拉动) 子阵列)具有for循环 4) biggestNumber变量设置为存储子数组中的最大数字,if语句设置为确定哪个数字最大,然后将该数字推送到largestNumbers数组 5) 中断内部for循环,然后对第二个子数组重复步骤 在没有给出整个挑战的答案的情况下,您能告诉我,为了实现最终结果,我缺少了哪些语法或元素吗Javascript 嵌套循环后返回结果,javascript,arrays,loops,break,Javascript,Arrays,Loops,Break,我正试图找出如何让下面的代码将biggestNumber变量推送到largestNumbers变量,以便将largestoff的每个子数组中的最大数字作为largestNumbers数组返回 我在心里看到了这一点,认为我写的代码是正确的。这是我的思考过程: 1) LargestNumber设置为空数组 2) 创建一个for循环,该循环将在循环期间拉动每个子数组,并将其存储为PulledSubArray 3) 我需要在子数组中循环(拉动) 子阵列)具有for循环 4) biggestNumber变
function largestOfFour(arr) {
var largestNumbers = [];
for (var i = 0; i > arr.length; i++){
var pulledSubArray = arr[i];
for (var n = 0; n > pulledSubArray.length; n++){
var biggestNumber = 0;
if (pulledSubArray[n] > biggestNumber){
biggestNumber = pulledSubArray[n];
} else if (pulledSubArray[n] < biggestNumber){
largestNumbers.push(biggestNumber);
break;
}
}
}
return largestNumbers;
}
largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
函数最大四(arr){
var最大数=[];
对于(变量i=0;i>arr.length;i++){
var pulledSubArray=arr[i];
对于(var n=0;n>pulledSubArray.length;n++){
var biggestNumber=0;
if(拉取子阵列[n]>最大数){
biggestNumber=pulledSubArray[n];
}else if(pulledSubArray[n]
如果要在每个子数组中获取最大的数字:
var数据=[[4,5,1,3],[13,27,18,26],[32,35,37,39],[10001001857,1];
函数最大四(数据){
返回数据.map(函数(d){
返回Math.max.apply(null,d)
})
}
console.log(最大四个(数据))
您的循环构造是错误的。纠正他们。函数的简单版本如下(ECMAScript 6)
如果你想坚持你的想法
函数最大四(arr){
var最大数=[];
对于(var i=0;i最大数){
biggestNumber=pulledSubArray[n];
}
}
largestNumbers.push(biggestNumber);//将最大的数字推到内部循环之外
}
返回最大的数字;
}
控制台日志(最大四个)([
[4, 5, 1, 3],
[13, 27, 18, 26],
[32, 35, 37, 39],
[1000, 1001, 857, 1]
]));代码>问题在于代码:
逻辑:
if(pulledSubArray[n]>biggestNumber){
biggestNumber=pulledSubArray[n];
}else if(pulledSubArray[n]
对于数组[4,5,1,3]
,对于第二次迭代,biggestNumber
保持4
,而pulledSubArray[n]
将保持5
。在这种情况下,您将推送该值并中断循环。但您没有检查整个阵列。所以你不会得到准确的结果
循环条件:
for(变量i=0;i>arr.length;i++){
这将永远不会进入循环。它应该是i
变量声明:
for(var n=0;n>pulledSubArray.length;n++){
var biggestNumber=0;
if(拉取子阵列[n]>最大数){
变量应该在循环外声明。您当前正在每次迭代中将其值设置为0
。因此,如果(pulledSubArray[n]>biggestNumber)
始终返回true,您最终将获得最后一个值
更新代码:
函数最大四(arr){
var最大数=[];
对于(变量i=0;i最大数){
biggestNumber=pulledSubArray[n];
}
}
最大数字。推送(最大数字)
}
返回最大的数字;
}
var list=最大四个([
[4, 5, 1, 3],
[13, 27, 18, 26],
[32, 35, 37, 39],
[1000, 1001, 857, 1]
]);
console.log(list)
您遇到的问题是什么?是否要从每个嵌套数组中获取最大的数?您的循环条件是错误的。请重新查看它们。您的es6示例可以使用更少的()
(数据)
可以是数据
或()
是可选的,如果您只有一个参数。
for (var i = 0; i > arr.length; i++){
^
Wrong condition
const largestOfFour = (arr) => arr.map(el => Math.max(...el));