[英]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.