我怎样才能把它变成一个函数,它接受任何长度的数组并给你总数?
var points = new Array(100);
for (var i = 0; i < 100; i++) {
points[i] = i + 1;
}
for(var i = 0; i < points.length; i++) {
console.log(points[i]);
}
你可以在两个循环中完成它,但你也可以只做一个循环来执行这两个任务。
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);
}
您只需使用变量即可使用 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);
使用for
循环和reduce()
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);
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;
}
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。
一个非常优雅和紧凑的解决方案是使用 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。