繁体   English   中英

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

[英]checking if sum of array is greater than max number and vice versa javascript

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。

我不确定我一开始是否正确地调用了数组。

谢谢

我实际上写了一个仅用于此类功能的库。

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) 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;
}
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;          
} 

你的意思是这样的吗?

function ArrayAdditionI(arr) {  

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

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

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

查看您的代码,有很多问题。 首先, arr()应该出错。 数组不是函数,尝试将它们视为函数无济于事。 传入数组时,该数组已经可用。此外,您希望将arraySum初始化为0 ,而不是"" 在执行此操作时,数组中的值将被强制为字符串并串联在一起,这不是您要查找的内容。 最后,数组不实现max()方法,但是Math可以实现,并且javascript中的函数/方法可以按照ddlshack等人的方式应用于数组。

存在一些语法错误:类型不匹配,错误的赋值和对不存在的方法的调用。 如果我了解您要做什么,这是正确的代码(如果更改项目顺序不是问题):

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;
} 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM