每次迭代后更新数组

时间:2014-07-18 16:17:40

标签: javascript d3.js

我有以下代码片段,每当if语句的计算结果为true时,它都会更新数组“end”的值(在本例中它等于3)。但是,数组刚刚被上次更新取代,并且所有先前的值都将被删除。如何附加新的值集?

d.forEach(function (d) {
  if (d.state_type=="end") {
    end=d.user_ids;
  }      
});

3 个答案:

答案 0 :(得分:1)

循环遍历d.user_ids数组并逐个推送到end

function whatever() {
  var end = [];
  d.forEach(function (d) {
    if (d.state_type == "end") {
      for (var i = 0, l = d.user_ids.length; i < l; i++) {
        end.push(d.user_ids[i])
      }
    }      
  });
  return end;
}

或者,你可以做你最初做的事情但flatten the array afterwards

function whatever() {
  var end = [];
  d.forEach(function (d) {
    if (d.state_type == "end") {
      end.push(d.user_ids)
    }      
  });
  var merged = [];
  return merged.concat.apply(merged, end);
}

DEMO

答案 1 :(得分:0)

您需要使用:

end.push(d.user_ids);

您还需要确保end是一个数组,以便您的循环可以是:

d.forEach(function (d) {
    if (d.state_type=="end") {
        if (typeof end == "undefined") {
            end = [];
        }

        end.push(d.user_ids);
    }      
});

答案 2 :(得分:0)

此处未定义您的数组end

您可以使用Array.push(value)在数组中添加值。

var end = end || []; //Here I am just making sure if end array doesn't exist create one.

d.forEach(function (d) {
  if (d.state_type=="end") {
    end.push(d.user_ids);
  }      
});