ÐаÑÑив ÑаÑÑиÑнÑÑ ÑÑмм
Ðа вÑ
оде маÑÑив ÑиÑел, напÑимеÑ: arr = [1,2,3,4,5].
ÐапиÑиÑе ÑÑнкÑÐ¸Ñ getSums(arr), коÑоÑÐ°Ñ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ Ð¼Ð°ÑÑив его ÑаÑÑиÑнÑÑ
ÑÑмм.
ÐнаÑе говоÑÑ, вÑзов getSums(arr) должен возвÑаÑаÑÑ Ð½Ð¾Ð²Ñй маÑÑив из Ñакого же ÑиÑла ÑлеменÑов, в коÑоÑом на каждой позиÑии должна бÑÑÑ ÑÑмма ÑлеменÑов arr до ÑÑой позиÑии вклÑÑиÑелÑно.
То еÑÑÑ:
Ð´Ð»Ñ arr = [ 1, 2, 3, 4, 5 ]
getSums( arr ) = [ 1, 1+2, 1+2+3, 1+2+3+4, 1+2+3+4+5 ] = [ 1, 3, 6, 10, 15 ]
ÐÑÑ Ð¿ÑимеÑ: getSums([-2,-1,0,1]) = [-2,-3,-3,-2].
- ФÑнкÑÐ¸Ñ Ð½Ðµ должна модиÑиÑиÑоваÑÑ Ð²Ñ Ð¾Ð´Ð½Ð¾Ð¹ маÑÑив.
- Ð ÑеÑении иÑполÑзÑйÑе меÑод
arr.reduce.
ÐÑкÑÑÑÑ Ð¿ÐµÑоÑниÑÑ Ñ ÑеÑÑами Ð´Ð»Ñ Ð·Ð°Ð´Ð°Ñи.
ÐеÑод arr.reduce подÑ
Ð¾Ð´Ð¸Ñ Ð·Ð´ÐµÑÑ Ð¸Ð´ÐµÐ°Ð»Ñно. ÐоÑÑаÑоÑно пÑойÑиÑÑ Ð¿Ð¾ маÑÑÐ¸Ð²Ñ Ñлева-напÑаво, Ð½Ð°ÐºÐ°Ð¿Ð»Ð¸Ð²Ð°Ñ ÑекÑÑÑÑ ÑÑÐ¼Ð¼Ñ Ð² пеÑеменной и, кÑоме Ñого, добавлÑÑ ÐµÑ Ð² ÑезÑлÑÑиÑÑÑÑий маÑÑив.
ÐепÑавилÑнÑй ваÑÐ¸Ð°Ð½Ñ Ð¼Ð¾Ð¶ÐµÑ Ð²ÑглÑдеÑÑ Ñак:
function getSums(arr) {
var result = [];
if (!arr.length) return result;
arr.reduce(function(sum, item) {
result.push(sum);
return sum + item;
});
return result;
}
alert(getSums([1,2,3,4,5])); // ÑезÑлÑÑаÑ: 1,3,6,10
ÐеÑед Ñем, как ÑиÑаÑÑ Ð´Ð°Ð»ÑÑе, поÑмоÑÑиÑе на него внимаÑелÑно. ÐамеÑили, в ÑÑм оÑибка?
ÐÑли Ð²Ñ ÐµÐ³Ð¾ запÑÑÑиÑе, Ñо обнаÑÑжиÑе, ÑÑо ÑезÑлÑÑÐ°Ñ Ð½Ðµ ÑовÑем ÑоÑ. РполÑÑивÑемÑÑ Ð¼Ð°ÑÑиве вÑего ÑеÑÑÑе ÑлеменÑа, оÑÑÑÑÑÑвÑÐµÑ Ð¿Ð¾ÑледнÑÑ ÑÑмма.
ÐÑо из-за Ñого, ÑÑо поÑледнÑÑ ÑÑмма ÑвлÑеÑÑÑ ÑезÑлÑÑаÑом меÑода reduce, он на ней заканÑÐ¸Ð²Ð°ÐµÑ Ð¿ÑоÑ
од и далее ÑÑнкÑÐ¸Ñ Ð½Ðµ вÑзÑваеÑ, поÑÑÐ¾Ð¼Ñ Ð¾Ð½Ð° оказÑваеÑÑÑ Ð½Ðµ добавленной в result.
ÐÑпÑавим ÑÑо:
function getSums(arr) {
var result = [];
if (!arr.length) return result;
var totalSum = arr.reduce(function(sum, item) {
result.push(sum);
return sum + item;
});
result.push(totalSum);
return result;
}
alert(getSums([1,2,3,4,5])); // 1,3,6,10,15
alert(getSums([-2,-1,0,1])); // -2,-3,-3,-2
function getSums(arr) {
var result = [];
if (!arr.length) return result;
var totalSum = arr.reduce(function(sum, item) {
result.push(sum);
return sum + item;
});
result.push(totalSum);
return result;
}
ÐÑкÑÑÑÑ ÑеÑение Ñ ÑеÑÑами в пеÑоÑниÑе.