Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使数组相加?_Javascript_Arrays_Math - Fatal编程技术网

Javascript 如何使数组相加?

Javascript 如何使数组相加?,javascript,arrays,math,Javascript,Arrays,Math,我想把一个数组相加 假设有一个[7,1,21,70]的数组 在数组索引为0的情况下,它将仅为7。对于1的数组索引,我希望它是7+1(8)。数组索引2,7+1+21(29)。数组索引37+1+21+70(99) 这是我当前的代码: var pot = { 'id': 1, 'name': ['stalin', 'hitler', 'mao', 'kim jong-il'], 'amount': [50, 10, 150, 500], 'percentages': new Array

我想把一个数组相加

假设有一个[7,1,21,70]的数组

在数组索引为0的情况下,它将仅为7。对于1的数组索引,我希望它是7+1(8)。数组索引2,7+1+21(29)。数组索引37+1+21+70(99)

这是我当前的代码:

var pot = {
  'id': 1,
  'name': ['stalin', 'hitler', 'mao', 'kim jong-il'],
  'amount': [50, 10, 150, 500],
  'percentages': new Array()
}

var random = Math.random()*100;
var random = String(random).split(".")[0];
console.log(random);

function potTotal(amounts) {
  var sum = 0;
  for (var key in amounts) {
    sum += pot['amount'][key];
  }
  return sum;
}

function potPercentage(total, amounts) {
  for (var key in amounts) {
    var percentage = amounts[key] / total * 100;
    var percentage = String(percentage).split(".")[0];
    var percentage = Number(percentage);
    pot['percentages'].push(percentage);
  }
}

potPercentage(potTotal(pot['amount']), pot['amount']);

function ranging(total, percentages) {
  console.log(percentages);
  for(var i = 0; percentages < i; i++) {
    console.log(percentages[i]);
  }
}
//[7, 1, 21, 70]
ranging(random, pot['percentages']);

for (var key in pot['percentages']) {
  console.log(key);
  console.log(pot['percentages'][key]);
}
一个简单的
forEach()
就可以了:

var-arr=[7,1,21,70];
arr.forEach((项目、索引)=>{
如果(索引-1>-1){
arr[index]+=arr[index-1];
}
});

控制台日志(arr)只需使用for循环进行迭代并添加上一项即可

let items = [1,2,3,4,5,6,7];

for (let i = 1; i < items.length; i++)
    items[i] = items[i] + items[i-1];
let items=[1,2,3,4,5,6,7];
for(设i=1;i
基本上,您正在寻找
前缀和
方法,请尝试以下方法:

var-arr=[7,1,21,70];
对于(变量i=1;i控制台日志(arr)
reduce
是定义用于执行此类任务的函数

const arr=[7,1,21,70].reduce((acc,el,i)=>[…acc,(acc[i-1]| | 0)+el];

控制台日志(arr)我喜欢这个,因为它非常容易阅读并且不会改变原始数组

通过数组上的映射,可以逐个访问该数组中的每个项(就像foreach循环一样),但它也会创建一个包含回调返回值的新数组

函数添加连续(nums){
设和=0;
返回nums.map(num=>sum+=num)
}
log(addconsuites([7,1,21,70])
您可以在数组上使用该方法,这样在进行计算时就不用麻烦管理索引,而且
reduce
将返回一个全新的数组,其额外好处是不会破坏原始数组

var originalArray=[7,1,21,70];
var累计=(会计科目、当前、索引)=>{
如果(索引===0)加速推送(当前);
其他附件推送(附件[index-1]+电流);
返回acc;
}
var computedArray=originalArray.reduce(addUp,[]);

log(computedArray)嗨!请将问题中的代码简化为(请注意“最小值”)以演示问题,最好是使用堆栈片段(工具栏按钮)运行的代码。谢谢dudeit@Techius很高兴帮助您:-)
let items = [1,2,3,4,5,6,7];

for (let i = 1; i < items.length; i++)
    items[i] = items[i] + items[i-1];