函数参数以这种格式存储
["2015-07-05 00:30", 59]
...
["2015-07-05 01:00", 62]
function generateCSV(timeAndValue) {
object = {}
var zero = 0;
for(i = 0; i < timeAndValue.length; i++){
var value = timeAndValue[i]
var days = moment(value[0]).format('YYYY-MM-DD');
obj[days] += value[1] + ', '
}
}
在循环对象中,需要几天作为参数以及当天花费的值。 2015-07-05:
“2015-07-05:”undefined59,62,65 ......
2015-07-06:“undefined61,61,60 ......”
每个参数值都以“undefined”开头。如何循环参数不会以“未定义”开头?
答案 0 :(得分:1)
替换
obj[days] += value[1] + ', '
带
if (obj[days]===undefined) obj[days] = '';
obj[days] += value[1] + ', '
这样您就不会向undefined
添加字符串。
但是,不是在每个值之后添加", "
,而是还可以在循环中构建一个数组:
if (obj[days]===undefined) obj[days] = [];
obj[days].push(value[1])
然后在末尾使用join以避免使用尾随逗号(并且基于字符串构建应该延迟到渲染时间的一般原则)。
注意变量声明:object
可能没问题,假设它在一个刚好的外部范围内定义,但缺少i
的声明是非常危险的,因为很可能它不是唯一的{{ 1}}在你的申请中。
编辑:正如詹姆斯所见,你有一个错字,它是“对象”或“对象”。