gpt4 book ai didi

javascript - 在javascript中迭代数组数组

转载 作者:行者123 更新时间:2023-11-30 07:36:04 26 4
gpt4 key购买 nike

我是 javascript 的新手,我不知道如何在javascript。

我有一个问题,我必须从数组输入的数组中找到最大的数组:

Return an array consisting of the largest number from each provided sub-array. For simplicity, the provided array will contain exactly 4 sub-arrays. Remember, you can iterate through an array with a simple for loop, and access each member with array syntax arr[i]

第一个问题被我成功解决了,我在最后写了代码,但我无法解决第二个输入。

问题 1[已解决]

  • 输入:largestOfFour( [[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39],[1000,1001, 857 , 1]] );

  • 输出:[1000,1001,857,1]

问题 2[未解决]

  • 输入:largestOfFour( [[13, 27, 18, 26], [4, 5, 1, 3], [32, 35, 37, 39], [1000, 1001, 857 , 1]]), [27,5,39,1001] );

  • 输出:[27,5,39,1001]

如果仍然不清楚,请查看此链接并告诉我就是这样

http://freecodecamp.com/challenges/bonfire-return-largest-numbers-in-arrays

我的第一个问题的代码。 (更改我的代码以便可以解决第二个问题)

function largestOfFour(arr) {
var iAmLarge = new Array();
iAmLarge = arr[0];
var large = iAmLarge[0];

for(var i=0;i<iAmLarge.length;i++) {
if(large<=iAmLarge[i] ) {
large = iAmLarge[i];
}
}
var maxFoundAt = 0;
for(var i=0;i<arr.length;i++){
var newArray=new Array();
newArray = arr[i];
var max = newArray[0];
for(var j=0;j<newArray.length;j++) {
if(max<newArray[j] ) {
max = newArray[j];
}
}
if(max>=large) {
large = max;
maxFoundAt = i;
}
}
alert( arr[maxFoundAt]);
}

largestOfFour( [[4, 9, 1, 3], [13, 35, 18, 26], [32, 35, 97, 39], [1000000, 1001, 857, 1]]);

最佳答案

对于第二个问题,你想从每个子数组中收集最大的数字,你可以这样做(工作片段):

function largestOfFour(master) {
var result = [];
// iterate through all arrays passed
for (var i = 0; i < master.length; i++) {
// master[i] is an array and can be just treated like any array
result.push(Math.max.apply(Math, master[i]));
}
return result;
}

var r = largestOfFour( [[13, 27, 18, 26], [4, 5, 1, 3], [32, 35, 37, 39], [1000, 1001, 857, 1]]);

// show result in snippet
document.write(JSON.stringify(r));


稍微解释一下,Math.max.apply(Math, array) 是一种查找数组中最大值的技巧。它是这样工作的:

Math.max() 接受您想要传递给它的所有参数。例如,您可以执行 Math.max(1,2,3,4,5,6),它将返回 6。因此,如果您可以将整个参数数组传递给它,那么它会在整个数组中找到最大值。

那么,如何将值数组转换为函数的一组参数。那么,您可以使用 .apply() 来做到这一点。它是 Javascript 中任何函数的方法。您可以阅读有关 here on MDN 的信息.因此,由于 Math.max() 是一个函数,我们可以使用 Math.max.apply() 将值数组用作 Math 的参数.max().apply() 本身接受两个参数。第一个是您希望函数具有的 this 值。事实证明,这在这里并不是真正相关的,所以我们传递 Math,它只是给 .max() 函数相同的 this 值如果我们将其称为 Math.max() 就会有。 .apply() 的第二个参数是我们希望作为函数参数的值数组。为此,我们只传递我们的数组。所以,我们最终得到:

Math.max.apply(Math, myArray);

在 myArray 中找到最大值。为了解这是如何工作的,让我们假设我们有:

var myArray = [9,8,7,1];
var highest = Math.max.apply(Math, myArray);

这和这个是一样的:

var highest = Math.max(9,8,7,1);

Math.max.apply(Math, myArray) 获取 myArray 中的值数组,并将它们作为连续参数传递给 Math.max() 就像我们将它们作为参数手动输入到我们的代码中一样。

并且,在上述两种情况下,最高 === 9

关于javascript - 在javascript中迭代数组数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32393284/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com