嗨,我无法让我的推送功能起作用..
我的代码
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
答案 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);
});