首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript循环来创建数组(而不是通过数组循环)

Javascript循环来创建数组(而不是通过数组循环)
EN

Stack Overflow用户
提问于 2015-08-06 01:59:11
回答 2查看 222关注 0票数 1

我试图循环两个日期数组,dateFromdateTo在甘特图插件中使用。甘特图需要ganttData。我想同时循环这两个数组,并将ganttData创建为一个数组。现在,它在两个数组中同时循环,但是ganttData只是两个数组的最后一个索引,这是有意义的,因为我每次都是通过循环重新分配值。

我尝试使用+=而不是=,但是我得到了一个错误:

未定义TypeError:无法读取未定义属性的“长度”

下面是我到目前为止所掌握的代码:

这些数组是正确的,我已经检查过。

我不熟悉JS,所以我们非常感谢所有的帮助。谢谢!

代码语言:javascript
复制
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" }
        ]
    }];
};  
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-06 02:12:36

假设datesTo和datesFrom的长度相同,您需要创建一个数组(ganttData),并为每一对日期向它推送一个新对象,如下所示:

代码语言:javascript
复制
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" }
    ]
  });
}
票数 1
EN

Stack Overflow用户

发布于 2015-08-06 02:10:07

通常,要构建一个数组,您可以使用以下模式:

代码语言:javascript
复制
var ganttData = [];
for (...) {
  ganttData.push({...});
}

在JavaScript中,array1 + array2不是定义的:它会将两个参数转换为字符串并将它们连接起来。对于数组级联,您需要使用array1.concat(array2),或者如果您希望使用破坏性方法(即更改array1),则使用array1.push.apply(array1, array2);但是对于附加一个元素,push是一个更好的选择。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31845619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档