检查数组的总和是否大于最大数,反之亦然javascript

时间:2012-02-03 23:38:56

标签: javascript arrays

function ArrayAdditionI(arr) {  
  var numbers = arr();
   var arraySum = "";
   for (var i = 0; i < numbers.length; i++) {
        arraySum = arraySum + arr[i];
};
if (numbers.max() <= arraySum) {
  arr = true
}
else if (numbers.max() > arraySum) {
   arr = false;
}

  return arr;            
} 

我需要找到存储在名为arr的数组中的数字,并检查它们是否相加或总数最大或者是否相加。如果是这样,返回true。如果没有,请返回false。

我不确定我是否在开始时正确调用数组。

由于

5 个答案:

答案 0 :(得分:3)

我实际上写了一个我只用于此类函数的库。

http://code.google.com/p/pseudosavant/downloads/detail?name=psMathStats.min.js

你会这样做:

var arr = [1,2,3,4,5,300];
if (arr.max() > arr.sum()){
    // Max is greater than sum...
}

虽然有一个警告。这个库原型化了一个Array对象,可以搞乱其他在数组上使用for (var i in arr)的脚本,这是你不应该做的。我实际上几乎完成了库的v2和许多新函数,它不再是Array对象的原型。

你可以从代码中获取.max()和.sum()方法,如果你愿意,可以在没有原型设计的情况下使用它们。

maxArray = function (arr) {
    return Math.max.apply(Math, arr);
}

sumArray = function (arr) {
    for (var i = 0, length = arr.length, sum = 0; i < length; sum += arr[i++]);
    return sum;
}

答案 1 :(得分:2)

function ArrayAdditionI(input) {  
   var arraySum, max;
   arraySum = max = input[0];
   for (var i = 1; i < input.length; i++) {
        arraySum += input[i];
        if(input[i] > max){
           max = input[i];
        }
   };

   return arraySum >= max;          
} 

答案 2 :(得分:2)

你的意思是这样的吗?

function ArrayAdditionI(arr) {  

    for (var i = 0, sum=0; i < arr.length; i++) {
        sum += arr[i];
    }

    return Math.max.apply( Math, arr ) <= sum;
}

答案 3 :(得分:1)

如果数字是正数,则答案得到保证 - 总和总是大于或等于最大值。如果你需要计算它,ddlshack的代码看起来不错。

查看您的代码,存在许多问题。首先,arr()应该出错。数组不是函数,并且尝试将它们视为函数什么都不做。您的数组在传入时已经可用。此外,您希望将arraySum初始化为0,而不是""。你这样做的方式,数组中的值将被强制转换为字符串并连接在一起,这不是你想要的。最后,数组不实现max()方法,但是Math方法,并且javascript中的函数/方法可以以ddlshack和其他方式显示的方式应用于数组。

答案 4 :(得分:1)

存在一些语法错误:类型不匹配,错误分配以及对不存在的方法的调用。如果我理解你想做什么,这是正确的代码(如果更改项目顺序不是问题):

function ArrayAdditionI(arr) {  
   var ret = false;
   var arraySum = 0;
   for (var i = 0; i < arr.length; i++) {
        arraySum += arr[i];
   }
   if (arr.sort()[arr.length-1] <= arraySum) {
     ret = true
   }
   return ret;
}