简单的双循环

时间:2016-09-02 11:10:09

标签: javascript jquery arrays

我正在尝试创建一个这样的数组:

0{
            0 - 2015
            1 - {thema1,thema2,thema3}
 },
1{
            0 - 2016
            1 - {thema1,thema2,thema3}
 }

我使用以下代码行将内容从框架列表中删除:

actualYear = 2016;
actualMonth = 9;
columns= [];

    $(document).ready(function(){
        for(var year = 2015; year <= actualYear; year++){

            var element = [];
            element.push(year);


            $SP().list("Workload_"+year).view("Alle Elemente",function(data,viewID) {
                for (var i=0; i<data.fields.length; i++){ element.push(data.fields[i])};
            });
            columns.push(element);
        }
    });

连接很好 - 它需要正确的数据,但我有一些问题,因为上面的代码创建了这样的数组:

0{
            0 - 2015
            1 - undefined
 },
1{
            0 - 2016
            1 - {thema1,thema2,thema3,thema1,thema2,thema3}
 }

它将每个 data.fields 写入最后一个子数组。 我只是不明白为什么会发生这种情况 - 它与循环中的函数有关吗?确定如果我使用return它在第一列子数组中写入正确的数据 - 但它会使循环中断... ...

我错过了什么?

编辑:

var元素是对循环进行分组(年份和主题) 元素var应如下所示: [2015,{thema1,thema2,thema3}]

列var是将它们组合在一起的变量 应该看起来像: [{2015,{thema1,thema2,thema3}},{2016,{thema1,thema2,thema3}}]

我的问题是,主题(thema's)将来可能会发生变化,因此对这些数据进行硬编码并不是一个好主意。这就是为什么我会把它从列表中删除。

亲切的问候 PROXI

1 个答案:

答案 0 :(得分:1)

尝试以下代码。

var actualYear = 2016;
var actualMonth = 9;
var columns = [];

$(document).ready(function() {
  for (var year = 2015; year <= actualYear; year++) {

    var element = [];
    element.push(year);

    $SP().list("Workload_" + year).view("Alle Elemente", function(data, viewID) {
      var arr = []
      for (var i = 0; i < data.fields.length; i++) {
        arr.push(data.fields[i])
      };
      element.push(arr);
    });
    columns.push(element);
  }
});

导致控制台: enter image description here