我正在学习JavaScript,并被要求创建一种解决方案以查找并返回数组的最大整数。

let numbers = [1, 2, 3, 4, 5]

function largestNumber(numbers) {
  return Math.max.apply(null, numbers);
}

console.log(numbers);
largestNumber(numbers);


找到解决方案后,我想通过首先创建一个随机数组然后从中返回最大值来扩展这个问题:

function randomArray(length, max) {
  return Array.apply(null, Array(length)).map(function(numbers) {
    return Math.round(Math.random() * max);
  });
}

let numbers = randomArray(5, 500)

function largestNumber(numbers) {
  return numbers.map(function(randomArray) {
    return Math.max.apply(null, randomArray);
  });
}

console.log(numbers);
largestNumber([numbers]);


虽然此方法解决了问题,但缺少我一直在寻找的精妙之处。例如,有一种方法可以将randomArray()嵌套到largestNumber()中。有没有一种方法可以调用largestNumber(numbers)而不是largestNumber([numbers])。非常感谢您对我的解决方案的反馈以及对其他可能解决方案的建议。

最佳答案

有没有一种方法可以调用largestNumber(numbers)而不是largestNumber([numbers])


我将首先介绍这一点,因为它是最简单的部分:只需不要更改largestNumber以使用.map()方法-这就是为什么它现在期望一个数组数组并返回一个数组的原因。

您最初的largestNumber()实现期望numbers是一维数组,并且可以在任何数字数组上工作,而不管该数组是否随机填充。


  有没有办法将randomArray()嵌套到largestNumber()


是。如果您只想摆脱中间的numbers变量,可以这样做:

largestNumber(randomArray(5, 500))


或者,如果您想将随机部分移动到largestNumber()函数体内,则要使其始终生成相同数量的相同大小的可能数字,可以直接将调用嵌入到randomArray(5, 500)中,而不必使用numbers参数:

function largestNumber() {
  return Math.max.apply(null, randomArray(5, 10));
}


或者,您可以将数组长度和随机数限制参数设为largestNumber()

function largestNumber(length, max) {
  return Math.max.apply(null, randomArray(length, max));
}



  对于我的解决方案的反馈以及对其他可能解决方案的建议,我们将不胜感激


我不会将randomArray()嵌入到largestNumber()中,至少不会将函数重命名为largestRandomNumber()或其他内容。最好将这两个功能分开,以便可以独立使用。

10-06 08:23