0

我需要将每个页面的高度推入一个数组。但是/我的问题是,我需要推送的不是值本身,而是值的总和。

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

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

结果看起来像这样:[0, 2000, 1000, 3000, 1500],这是页面的高度,但我需要这样的东西:[0, 2000, 3000, 6000, 7500],这是添加的页面高度的总和。

4

3 回答 3

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

编辑编辑后的版本现在根据提问者的要求
合并了领先的数组成员。0

于 2012-12-28T22:43:17.037 回答
2

在您拥有的代码之后添加:

var total = 0;
for (i=1 ; i < heights.length ; ++i) {
    total += heights[i];
    heights[i] = total;
}
于 2012-12-28T22:39:04.310 回答
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变量污染任何范围。

于 2012-12-28T22:41:35.560 回答