如何将其转换为一个带有任意长度数组并赋予总数的函数?
{{1}}
答案 0 :(得分:1)
只需使用变量
,您就可以使用for循环本身获得总和
var points = new Array(100),
sum = 0;
for (var i = 0; i < 100; i++) {
points[i] = i + 1;
}
for (var i = 0; i < points.length; i++) {
sum += points[i];
}
console.log(sum);
fill()
和 forEach()
来生成数组,并使用 reduce()
来减少这两项操作得到总和
var points = new Array(10000); // create an array of size 10000
points.fill(1); // fill it with 1 which helps ti=o iterate using foreach
points.forEach(function(v, i) { // iterate the array, you can also use simple for loop here
points[i] = v + i; // update the value
});
var sum = points.reduce(function(a, b) { // find sum
return a + b;
});
console.log(sum);
var points = []; // initialize an array
for (var i = 1; i <= 10000; i++) {
points.push(i);
}
var sum = points.reduce(function(a, b) { // find sum
return a + b;
});
console.log(sum);
您还可以在单个for循环
中进行添加和数组创建
var points = [], // initialize an array
sum = 0;
for (var i = 1; i <= 10000; i++) {
points.push(i); // pushing value to array
sum += i; // summation
}
console.log(sum, points);
答案 1 :(得分:1)
var result = 0;
for(var i = 0; i < points.length; i++) {
result += points[i];
}
获取任意长度的数组并返回总和的函数:
function sumArray(arrayToSum){
var result = 0;
for(var i = 0; i < arrayToSum.length; i++) {
result += points[i];
}
return result;
}
答案 2 :(得分:1)
你可以在两个循环中完成它,但你也可以做一个循环来完成这两个任务。
var array = [],
sum = 0;
for (var i = 1; i <= 10000; i++) {
array[i-1] = i;
sum += i;
}
如果要概括查找数组之和的任务,可以使用如下函数:
function arraySum(array) {
var sum = 0;
for (var i = 0; i < array.length; i++)
sum += array[i];
return sum;
}
对于那些能够理解它的人来说,使用reduce
是最佳答案:
function arraySum(array) {
return array.reduce(function(a,b){return a+b}, 0);
}
答案 3 :(得分:0)
function arraysum(arraylength) {
var arraysum = 0;
var array1 = new Array();
for(i=1; i<=arraylength; i++) {
array1.push(i);
}
for(i = 0; i< array1.length; i++) {
arraysum += array1[i];
}
return arraysum;
}
现在你调用函数
arraysum(x)
将函数传递给某个变量或整数,例如1,15或10000。
答案 4 :(得分:-2)
非常优雅和紧凑的解决方案是使用reduce。它通过将每个值和一个起始值应用于给定函数来累积数组值以将其减少为单个值,该函数的返回值用作下一次迭代的起始值:
function sum (a, b) {
return a + b;
}
console.log(points.reduce(sum, 0));
如果您需要支持较旧的浏览器(例如IE 8),则可以使用Polyfill。
如果您还需要创建数字列表,可以使用
创建它var points = Array.apply(0, Array(10000))
.map(function (current, index) {
return index + 1;
});
它创建一个包含10000个元素的数组,并为每个元素指定它的索引+ 1。