在JavaScript

时间:2016-10-22 01:28:24

标签: javascript function

我已经定义了一个名为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
   }
  }
 }
}

5 个答案:

答案 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)

遍历数组一次,只保留最大值:

&#13;
&#13;
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;
&#13;
&#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]));