我要添加一个数组。
假设有[7,1,21,70]
在数组索引为0的情况下,它应该是7。在数组索引为1的情况下,我希望它是7 +1(8)。数组索引2、7 + 1 + 21(29)。数组索引3 7 +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]);
}
结果返回:
69
[ 7, 1, 21, 70 ]
0
7
1
1
2
21
3
70
答案 0 :(得分:1)
ServiceBusAttribute
是定义用于执行此类任务的功能。
reduce
答案 1 :(得分:0)
一个简单的forEach()
将为您服务:
var arr = [7, 1, 21, 70];
arr.forEach((item, index) => {
if(index - 1 > -1){
arr[index] += arr[index-1];
}
});
console.log(arr);
答案 2 :(得分:0)
只需使用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];
答案 3 :(得分:0)
基本上,您正在寻找prefix sum
方法,请尝试以下操作:
var arr = [7, 1, 21, 70];
for(var i = 1; i < arr.length; i++){
arr[i] += arr[i-1];
}
console.log(arr);
供参考:Prefix sum
答案 4 :(得分:0)
我喜欢这个,因为它很容易阅读并且不会改变原始数组。
映射数组使您可以逐一访问该数组中的每个项目(就像foreach循环一样),但它还会创建一个包含回调返回值的新数组。
function addConsecutives(nums) {
let sum = 0;
return nums.map(num => sum += num)
}
console.log(addConsecutives([7, 1, 21, 70]));
答案 5 :(得分:0)
您可以在数组上使用reduce
方法,以免在进行计算时麻烦管理索引,并且reduce
还会为您返回全新的数组 ,还有不破坏原始阵列的额外好处
var originalArray = [7, 1, 21, 70];
var addUp = (acc, curr, index) => {
if (index === 0) acc.push(curr);
else acc.push(acc[index-1] + curr);
return acc;
}
var computedArray = originalArray.reduce(addUp, []);
console.log(computedArray);