创建一个名为maximumNumberInArray()的函数
以数组作为参数并返回最大数字。
这是一个数组
const array = [-1,0,3,100, 99, 2, 99]
我在JS中尝试的方式:
function biggestNumberInArray(arr) {
for (let i = 0; i < array.length; i++) {
for(let j=1;j<array.length;j++){
for(let k =2;k<array.length;k++){
if(array[i]>array[j] && array[i]>array[k]){
console.log(array[i]);
}
}
}
}
}
它返回3 100 99。
我只想返回100,因为它是最大的数字。
是否有任何改进的方法可以使用循环获得最大价值?
使用三个不同的javascript循环来实现这一点(for,forEach,for,for,for in)
您可以使用其中的三个来完成
答案 0 :(得分:0)
最简单的方法是使用Math.max.apply
:
const array = [-1,0,3,100, 99, 2, 99];
function biggestNumberInArray(arr) {
return Math.max.apply(Math, arr);
}
console.log(biggestNumberInArray(array));
如果您真的想使用for
循环,则可以使用this answer中的技术来实现:
const array = [-1,0,3,100, 99, 2, 99];
function biggestNumberInArray(arr) {
var m = -Infinity,
i = 0,
n = arr.length;
for (; i != n; ++i) {
if (arr[i] > m) {
m = arr[i];
}
}
return m;
}
console.log(biggestNumberInArray(array));
您还可以使用reduce
:
const array = [-1,0,3,100, 99, 2, 99];
function biggestNumberInArray(array) {
return array.reduce((m, c) => c > m ? c : m);
}
console.log(biggestNumberInArray(array));
答案 1 :(得分:0)
这最适合某些函数式编程并使用reduce,因为如今循环已不再受欢迎。
const max = array => array && array.length ? array.reduce((max, current) => current > max ? current : max) : undefined;
console.log(max([-1, 0, 3, 100, 99, 2, 99]));
这比Math.max https://jsperf.com/max-vs-reduce/1的性能高70%
答案 2 :(得分:0)
使用spread语法为您提供一些ES6魔术:
function biggestNumberInArray(arr) {
const max = Math.max(...arr);
return max;
}
实际上,有几个人以比我更详细的方式回答了这个问题,但是如果您对获取最大数量的各种方式之间的表现感到好奇,我希望您阅读this。数组。
答案 3 :(得分:0)
另一种可视化方法是创建一个名为maxNumber之类的变量,然后检查数组中的每个值,如果该值大于maxNumber,则现在maxNumber =该值。
const array = [-1,0,3,100, 99, 2, 99];
function biggestNumberInArray(arr) {
let maxNumber;
for(let i = 0; i < arr.length; i++){
if(!maxNumber){ // protect against an array of values less than 0
maxNumber = arr[i]
}
if(arr[i] > maxNumber){
maxNumber = arr[i];
}
}
return maxNumber
}
console.log(biggestNumberInArray(array));
我希望这会有所帮助:)
答案 4 :(得分:0)
我认为您误解了循环的使用方式-不需要三个嵌套循环。您可以通过一个循环遍历数组,跟踪变量中的最大数目,然后在循环结束时返回变量。
function largest(arr) {
var largest = arr[0]
arr.forEach(function(i) {
if (i > largest){
largest = i
}
}
return largest;
}
当然,您可以执行以下操作:
Math.max(...arr)
但问题确实要求for循环实现。
答案 5 :(得分:0)
zer00ne的答案为简单起见应该更好,但如果您仍然想遵循for循环的方法,则为:
function biggestNumberInArray (arr) {
// The largest number at first should be the first element or null for empty array
var largest = arr[0] || null;
// Current number, handled by the loop
var number = null;
for (var i = 0; i < arr.length; i++) {
// Update current number
number = arr[i];
// Compares stored largest number with current number, stores the largest one
largest = Math.max(largest, number);
}
return largest;
}
答案 6 :(得分:0)
有多种方法。
- 使用Math max函数
let array = [-1, 10, 30, 45, 5, 6, 89, 17];
console.log(Math.max(...array))
- 使用reduce
let array = [-1, 10, 30, 45, 5, 6, 89, 17];
console.log(array.reduce((element,max) => element > max ? element : max, 0));
- 实现我们自己的功能
let array = [-1, 10, 30, 45, 5, 6, 89, 17];
function getMaxOutOfAnArray(array) {
let maxNumber = -Infinity;
array.forEach(number => { maxNumber = number > maxNumber ? number : maxNumber; })
console.log(maxNumber);
}
getMaxOutOfAnArray(array);
答案 7 :(得分:-1)
常量数组= [-1、0、3、100、99、2、99] 让最长的= Math.max(... array);
答案 8 :(得分:-1)
这个怎么样
def random_verse():
with open(afile) as fp:
data = json.load(fp)
#print(data['verse'])
questions = data['verse']
random_index = randint(0, len(questions)-1)
return questions[random_index]