繁体   English   中英

JavaScript 中如何计算数组的每个元素与其前一个元素的总和?

[英]How to calculate the sum of each element of an array and its previous elements in JavaScript?

例如,如果我有一个数组 [1,2,3,4],我想计算 1+2、1+2+3 和 1+2+3+4 并返回一个新数组。 我怎样才能做到这一点?

let arr = [1, 2, 3, 4];

doSomething(arr);

output...

newArr = [1, 3, 6, 10];

您可以对数组进行切片以获取所需元素并减少获取总和的值。

方法:

 var array = [1, 2, 3, 4], sums = array.map((_, i, a) => a.slice(0, i + 1).reduce((a, b) => a + b)); console.log(sums);

结束总和的乐趣

 var array = [1, 2, 3, 4], sums = array.map((a => b => a += b)(0)); console.log(sums);

添加此功能。

function dosomething (arr) {
  var i;
  if(i === 1 || i === 0) return arr; 
  for(i = 1; i<arr.length; i++){
    arr[i] += arr[i-1];
  }
  return arr;
}

您可以尝试使用 array.reduce

 let arr = [1, 2, 3, 4]; let newArr = []; arr.reduce((prev, current) => {newArr.push(prev+current); return prev + current}, 0); console.log(newArr);

一些优雅的方法:

 function getArrSum(arr) { if(!arr.length) return []; let tmp=[arr[0]]; for(let i=1; i<arr.length; i++) { tmp.push(tmp[i-1]+arr[i]); } return tmp; } let arr=[1,2,3,4]; console.log(getArrSum(arr));

 var a = [1,2,3,4];
 var b=[];

for(i=0;i<a.length;i++)
{   

  var sum = 0;

  for(j=0;j<=i+1;j++)
  {
    if(a[j] != null)
        sum=sum+a[j];
  }    
  b[i]=sum;
}

首先,我想分享一个链接,该链接显示什么应该是一个好问题。 https://stackoverflow.com/help/how-to-ask

关于数组的计算是:

 function getArray(numbers) { if(!numbers.length) return []; let array=[numbers[0]]; for(let i=1; i < numbers.length; i++) { array.push(array[i-1]+numbers[i]); } return array; } let array=[1,2,3,4]; let procArray = []; console.log(getArray(array));

暂无
暂无

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM