推送到阵列并创建运行总计

时间:2012-12-28 22:32:42

标签: javascript arrays running-total

我需要将每个页面的高度推到一个数组中。然而/我的问题是,我需要不是推动值本身,而是推动值的总计。

这是我到目前为止所做的:

var heights = [0];
$('.page').each(function(i) {
    heights.push($(this).height());
});

结果如下所示:[0, 2000, 1000, 3000, 1500],这是页面的高度, 但是我需要这样的东西:[0, 2000, 3000, 6000, 7500],这是页面高度增加的总计。

3 个答案:

答案 0 :(得分:3)

var heights = [0];
$('.page').each(function(i) {
    heights.push(
        $(this).height() + (heights[i] || 0)
    );
});

修改
编辑版现在根据提问者的要求合并了前导0数组成员。

答案 1 :(得分:2)

在您拥有的代码后添加:

var total = 0;
for (i=1 ; i < heights.length ; ++i) {
    total += heights[i];
    heights[i] = total;
}

答案 2 :(得分:2)

你可以在一个循环中完成:

var heights = [];
var total   = 0;
$('.page').each(function(i) {
    total += $(this).height();
    heights.push(total);
});

或者...如果你想要它超级干净:

var heights = [];
var total   = 0;
$('.page').each((function(){
  var total = 0;
  return function(i) {
    total += $(this).height();
    heights.push(total);
  };
}()));

第二个版本避免使用total变量污染任何范围。