创建一个用数字 1 到 10000 填充的数组,然后将所有这些数字相加



我怎样才能把它变成一个函数,它接受任何长度的数组并给你总数?

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。

最新更新