我有以下代码片段,每当if语句的计算结果为true时,它都会更新数组“end”的值(在本例中它等于3)。但是,数组刚刚被上次更新取代,并且所有先前的值都将被删除。如何附加新的值集?
d.forEach(function (d) {
if (d.state_type=="end") {
end=d.user_ids;
}
});
答案 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);
}
答案 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);
}
});