Javascript 如何使数组相加?
我想把一个数组相加 假设有一个[7,1,21,70]的数组 在数组索引为0的情况下,它将仅为7。对于1的数组索引,我希望它是7+1(8)。数组索引2,7+1+21(29)。数组索引37+1+21+70(99) 这是我当前的代码: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
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];