[英]Javascript loop to create array of arrays (not loop through array of arrays)
我试图遍历两个日期数组dateFrom
和dateTo
以在甘特图插件中使用。 甘特图需要ganttData
。 我想同时遍历这两个数组,并将ganttData
创建为数组数组。 现在,它同时在两个数组中循环,但是ganttData
只是两个数组的最后一个索引,这是有道理的,因为我每次都在循环中重新分配值。
我尝试使用+=
代替=
但出现错误:
未捕获的TypeError:无法读取未定义的属性“ length”
以下是我到目前为止的代码:
我已经检查了这些数组是否正确。
我不熟悉JS,因此非常感谢您提供所有帮助。 谢谢!
var datesFrom = <%= dates_from %>
var datesTo = <%= dates_to %>
//var ganttData = [] if I were to use ganttData += [ below
output = []
i;
for (i = 0; i < (datesFrom.length - 1); i += 1) {
ganttData = [{
id: 1, name: "Feature 1", series: [
{ name: "Planned", start: new Date(datesFrom[i]), end: new Date(datesTo[i]) },
{ name: "Actual", start: new Date(datesFrom[i]), end: new Date(datesTo[i]), color: "#f0f0f0" }
]
}];
};
通常,要构建一个数组,可以使用以下模式:
var ganttData = [];
for (...) {
ganttData.push({...});
}
在JavaScript中,与Ruby相比,未定义array1 + array2
:它将两个参数都转换为字符串,然后将其连接起来。 对于数组连接,您需要使用array1.concat(array2)
,或者如果您想要破坏性的方法(即更改array1
),请使用array1.push.apply(array1, array2)
; 但是对于附加一个元素, push
是一个更好的选择。
假设datesTo和datesFrom的长度相同,则需要创建一个数组(ganttData),并为每个日期对将一个新对象推送到该数组,如下所示:
var ganttData = [];
for(var i = 0; i < datesFrom.length; i++) {
ganttData.push({
id: i,
name: "Feature " + i,
series: [
{ name: "Planned", start: new Date(datesFrom[i]), end: new Date(datesTo[i]) },
{ name: "Actual", start: new Date(datesFrom[i]), end: new Date(datesTo[i]), color: "#f0f0f0" }
]
});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.