underscore.jsを使用して累積合計配列array = [1,2,3,4,5]
を取得したいと思います。
私が欲しい結果は次のとおりです。
[1,3,6,10,15]
累積合計15ではなく配列を値として使用します。どんな助けでもいただければ幸いです。
underscore.jsを使用して累積合計配列array = [1,2,3,4,5]
を取得したいと思います。
私が欲しい結果は次のとおりです。
[1,3,6,10,15]
累積合計15ではなく配列を値として使用します。どんな助けでもいただければ幸いです。
あなたは _.reduce()
これを取得するために行うことができます:
_.reduce([1, 2, 3, 4, 5], function (acc, n) { acc.push( (acc.length > 0 ? acc[acc.length-1] : 0) + n); return acc }, [])
より読みやすいバージョンはここにあります:
var prefixSum = function (arr) {
var builder = function (acc, n) {
var lastNum = acc.length > 0 ? acc[acc.length-1] : 0;
acc.push(lastNum + n);
return acc;
};
return _.reduce(arr, builder, []);
}
_.map()
オプションでもあります:
_.map(array,function(num,i){ if(i > 0) array[i] += array[i-1]; });
これは元の配列を編集するものであり、技術的に_.map
は想定されていることではないことに注意してください
新しいアレイを作成する非破壊バージョンが必要な場合:
var array = [1,2,3,4,5];
var cumulative = 0;
var sums = _.map(array,function(num){
cumulative += num;
return cumulative;
});
使用する_.reduce()
return _.reduce(
array
, (acc, _) => {
acc.push(_ + acc.slice(-1)[0]) // adding previous to current
return acc
}
, [0] // init acc with 0
).slice(1) // loose 0
[1、2、3、4、5] .map((c、i、a)=> c +(a [i-1] || 0));