推到阵列并创建总运行数



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

到目前为止我所做的是:

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

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

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

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

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

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变量污染任何作用域。

将此代码添加到您的代码之后:

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

相关内容

  • 没有找到相关文章

最新更新