Javascript循环以创建数组数组(而不是通过数组数组循环)
我试图循环使用两个日期数组,Javascript循环以创建数组数组(而不是通过数组数组循环),javascript,arrays,loops,Javascript,Arrays,Loops,我试图循环使用两个日期数组,dateFrom和dateTo,以便在甘特图插件中使用。甘特图需要ganttData。我想同时遍历这两个数组,并将ganttData创建为数组数组。现在,它同时在两个数组中循环,但ganttData只是两个数组的最后一个索引,这是有意义的,因为我只是在循环中每次重新分配值 我尝试使用+=而不是=,但出现了一个错误: 未捕获的TypeError:无法读取未定义的属性“length” 以下是我目前掌握的代码: 这些数组是正确的,我检查过了 我不熟悉JS,因此非常感谢您的帮
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 datesFrom=
var datesTo=
//var GANTDATA=[]如果我使用下面的GANTDATA+=[的话
输出=[]
我
对于(i=0;i<(datesFrom.length-1);i+=1){
甘特图数据=[{
id:1,名称:“功能1”,系列:[
{名称:“计划”,开始:新日期(日期自[i]),结束:新日期(日期至[i]),
{名称:“实际”,开始:新日期(日期自[i]),结束:新日期(日期至[i]),颜色:“#f0f0”}
]
}];
};
通常,要构建阵列,您可以使用以下模式:
var ganttData = [];
for (...) {
ganttData.push({...});
}
在JavaScript中,与Ruby相反,
array1+array2
没有定义:它将把两个参数转换为字符串,并将它们连接起来。对于数组连接,您需要使用array1.concat(array2)
,或者如果您想要一种破坏性的方法(即更改array1
),array1.push.apply(array1,array2)
;但是对于附加一个元素,push
是一个更好的选择。假设DateTo和datesFrom的长度相同,您需要创建一个数组(甘特图),并为每对日期向其推送一个新对象,如下所示:
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" }
]
});
}
var ganttData=[];
对于(var i=0;i
datesFrom和DateTo数组的长度是否相同?是的,现在是这样!将来它们可能会有所不同,但我认为我可以在rails代码中处理这一点。非常感谢!非常好。我的一天刚刚好了很多!感谢您的模式!我会记住这一点!