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。
我不确定我是否在开始时正确调用数组。
由于
答案 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;
}