我已经定义了一个名为greater的函数来查找两个参数(num1,num2)之间的较大数字。现在我想在另一个名为“maximum”的函数中使用这个函数,它获取一个数组并返回该数组的最大数量,但是我被卡住了。任何人都可以帮助我吗? 这是我的代码:
function larger(num1, num2){
var largerNumber = 0;
if (num1 > num2){
largerNumber = num1;
} else {
largerNumber = num2;
}
return largerNumber;
}
function largest(array){
for (var i = 0; i < array.length ; i++){
for (var j = 0; j < array.length ; j++){
if (array[i] != array[j]){
//I don`t know if I am doing it right
}
}
}
}
答案 0 :(得分:5)
只需使用Math.max
:
function largest(array) {
return Math.max.apply(Math, array);
}
console.log(largest([5,-2,7,6]));
如果您真的想使用自定义二进制larger
功能,请考虑[].reduce
:
function larger(num1, num2) {
return num1 > num2 ? num1 : num2;
}
function largest(array) {
return array.reduce(larger, -Infinity);
}
console.log(largest([5,-2,7,6]));
答案 1 :(得分:3)
最简单的解决方案是使用最大tmp值。这样,您只需要对所有数组进行一次迭代。
function largest(array){
var max = array[0];
for (var i = 1; i < array.length ; i++) { // So we start at 1
max = larger(max, array[i]);
// Or use this : if(array[i] > max) max = array[i];
}
由SAI SAID提供
我没有检查数组的长度,上面的解决方案只有在array.length&gt;的情况下才能工作。 0
否则,您必须使用类似这样的内容而不是var max = array[0];
function largest(array){
var max = -Infinity;
for (var i = 0; i < array.length ; i++) { Start at 0
max = larger(max, array[i]);
}
这实际上取决于你的IHM的人体工程学。
答案 2 :(得分:0)
遍历数组一次,只保留最大值:
function larger(num1, num2){
var largerNumber = 0;
if (num1 > num2){
largerNumber = num1;
} else {
largerNumber = num2;
}
return largerNumber;
}
function largest(array){
let largestNumber = array[0];
for (var i = 1; i < array.length ; i++){
largestNumber = larger(largestNumber, array[i]);
}
return largestNumber;
}
var test = [1, 53, 352, 22, 351, 333, 123, 5, 25, 96];
console.log(largest(test));
&#13;
答案 3 :(得分:0)
如果您只是想找到最大值,那么您应该使用Oriol的答案:Math.max
如果您正在寻找从另一个函数调用一个函数的方法,您可以这样做:
function first_function() {
//code of first function
//call to the other function
second_function();
}
function second_function() {
//code of second function
}
答案 4 :(得分:0)
将数组的第一个元素设置为变量,如果数组中的下一个元素是该元素的更大设置变量;继续进程,返回变量
function largest(array) {
if (!array.length) return;
for (var i = 0, curr = void 0; i < array.length ; i++) {
if (curr === void 0) curr = array[i];
else if (curr < array[i]) curr = array[i];
}
return curr
}
console.log(largest([2,20,2000,2,7]));