Javascript推送阵列不起作用

时间:2015-05-24 14:21:45

标签: javascript arrays

嗨,我无法让我的推送功能起作用..

我的代码

   var result = {};


dpd.timesheetsdone.get(function (timesheets, err) {
  if(err) return console.log(err);

  timesheets.forEach(function(entry, index) {

   result[entry.timesheets[0].week] = [];
   result[entry.timesheets[0].week].push(entry);
     //heres my push
  }
   );
    setResult(result);

});

在运行它时,请按下我的输入,它就像=并将结果设置为1项,它不会推动。

这可能是什么问题?

时间表的例子 http://pastebin.com/w2i7xYgm

1 个答案:

答案 0 :(得分:1)

问题在于:

result[entry.timesheets[0].week] = [];

如果你曾经把任何东西放在那里,那就把它擦掉了;所以你只看到那周的最后事物。

如果你还没有这样做,你只想做那个任务:

if (!result[entry.timesheets[0].week]) {
    result[entry.timesheets[0].week] = [];
}

E.g:

var result = {};

dpd.timesheetsdone.get(function(timesheets, err) {
    if (err) return console.log(err);

    timesheets.forEach(function(entry, index) {

        if (!result[entry.timesheets[0].week]) {
            result[entry.timesheets[0].week] = [];
        }
        result[entry.timesheets[0].week].push(entry);
    });
    setResult(result);

});

或者为了避免重复的对象查找:

var result = {};

dpd.timesheetsdone.get(function(timesheets, err) {
    if (err) return console.log(err);

    timesheets.forEach(function(entry, index) {
        var week = entry.timesheets[0].week;
        var weekArray = result[week];
        if (!weekArray) {
            weekArray = result[week] = [];
        }
        weekArray.push(entry);
    });
    setResult(result);

});