我试图循环两个日期数组,dateFrom和dateTo在甘特图插件中使用。甘特图需要ganttData。我想同时循环这两个数组,并将ganttData创建为一个数组。现在,它在两个数组中同时循环,但是ganttData只是两个数组的最后一个索引,这是有意义的,因为我每次都是通过循环重新分配值。
我尝试使用+=而不是=,但是我得到了一个错误:
未定义TypeError:无法读取未定义属性的“长度”
下面是我到目前为止所掌握的代码:
这些数组是正确的,我已经检查过。
我不熟悉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" }
]
}];
}; 发布于 2015-08-06 02:12:36
假设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" }
]
});
}发布于 2015-08-06 02:10:07
通常,要构建一个数组,您可以使用以下模式:
var ganttData = [];
for (...) {
ganttData.push({...});
}在JavaScript中,array1 + array2不是定义的:它会将两个参数转换为字符串并将它们连接起来。对于数组级联,您需要使用array1.concat(array2),或者如果您希望使用破坏性方法(即更改array1),则使用array1.push.apply(array1, array2);但是对于附加一个元素,push是一个更好的选择。
https://stackoverflow.com/questions/31845619
复制相似问题