简体   繁体   English

如何将每个数字与之前的数字相加(JavaScript)?

[英]How to sum the each number with the numbers before (JavaScript)?

I have this array of numbers in JS code:我在 JS 代码中有这个数字数组:

var arrOf12Numbers = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120];

I need to sum the each number with the numbers before.我需要将每个数字与之前的数字相加。

var cumulative12ArrOfNumbers = [10, 30, 60, 100, 150, 210, etc to 11 index... ];

What is the best way to do that in JS?在 JS 中做到这一点的最佳方法是什么?

UPD : I'm newbie in JS UPD :我是 JS 新手

You could use Array#map and return the sum of the item and the last sum.您可以使用Array#map并返回项目和最后一个总和的总和。

This proposal does not alter the original array.这个提议不会改变原始数组。

 var array = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120], result = array.map(function (a) { return this.last += a; }, { last: 0 }); console.log(result);

A version without thisArg and a closure没有thisArg和闭包的版本

 var array = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120], result = array.map(function (last) { return function (a) { return last += a; }; }(0)); console.log(result);

ES6 ES6

 var array = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120], result = array.map((last => a => last += a)(0)); console.log(result);

Simple and fast solution using a regular for loop(without any functions):使用常规for循环的简单快速解决方案(没有任何功能):

 var arrOf12Numbers = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]; for (var i = 0, len = arrOf12Numbers.length; i < len; i++) { if (i > 0) arrOf12Numbers[i] = arrOf12Numbers[i] + arrOf12Numbers[i - 1]; } console.log(arrOf12Numbers);

And it's more than 2 times faster than approach with map() function(if you care about performance)它比使用map()函数的方法快2 倍以上(如果你关心性能)


To get result as a new array use the following approach:要将结果作为新数组使用以下方法:

 var arrOf12Numbers = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120], result = arrOf12Numbers.slice(); for (var i = 0, len = result.length; i < len; i++) { if (i > 0) result[i] = result[i] + result[i - 1]; } console.log(result);

The second apprroach is still about 2 times faster than map() function approach第二种方法仍然比map()函数方法快大约 2 倍

This will do the work without altering the original array.这将在不改变原始数组的情况下完成工作。 You just have to pass your original array to the function.您只需要将原始数组传递给该函数。

 var arrOf12Numbers = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]; var myFunc = function(arrOf12Numbers) { var cumulative12ArrOfNumbers = []; cumulative12ArrOfNumbers[0] = arrOf12Numbers[0]; for(i=1; i<arrOf12Numbers.length; i++) { cumulative12ArrOfNumbers[i] = arrOf12Numbers[i-1] + arrOf12Numbers[i]; } console.log(cumulative12ArrOfNumbers); }; myFunc(arrOf12Numbers);

This might help you.这可能对你有帮助。

 var arrOf12Numbers = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]; var result = []; var sum = 0; arrOf12Numbers.forEach(function (val, key) { sum += val; result.push(sum); }); console.log(result);

var arr = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120];
for (var i = 1; i < arr.length; i++) {
    sum = arr[i] + arr[i-1];
    arr[i] = sum;
}

It's not really so complicated, just a loop;其实没那么复杂,只是一个循环;

 var arrOf12Numbers = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]; var output = [], sum; for (var i = 0; i < arrOf12Numbers.length;i++) { output.push(i === 0 ? arrOf12Numbers[i] : output[i-1] + arrOf12Numbers[i]) } console.log(output);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 javascript-如何用JavaScript求和多个(未定义数量)文本框的数量? - How to sum the numbers of multiple (undefined number) textboxes with javascript? 如何在 javascript 的每个表格行之前添加数字? - How can I add numbers before each table row in javascript? 每天总和数 javascript / jquery - sum number each day javascript / jquery 如何迭代数组中的每个数字并将它们与同一数组中的其他数字相加 - JS - How to iterate each number in array and sum them with the other numbers in the same array - JS 如何生成X个随机数,其中每个数字都在A和B的范围内,所有数字的总和必须是Y - How to generate X random numbers, where each number is between a range of A and B and the total sum of all number has to be Y 如何比较数字与JS(VUE)中的数字总和 - How to compare number to sum of numbers in JS (VUE) 数组中的JavaScript总和数字,每个数字以两位数字表示 - Javascript sum numbers in an array by two digit sequence each Javascript:保持偶数和奇数随机数的数量并获得每个的总和 - Javascript: Keep count of even and odd random numbers and get the sum of each 如何在javascript中求和输入数字和数据库值 - How to sum input numbers and database values in javascript Javascript的新手:如何对数组中的特定数字求和 - Newbie to Javascript: how to sum specific numbers in an array
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM