循环结果未定义

时间:2015-07-07 12:59:28

标签: javascript

函数参数以这种格式存储

["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”开头。如何循环参数不会以“未定义”开头?

1 个答案:

答案 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}}在你的申请中。

编辑:正如詹姆斯所见,你有一个错字,它是“对象”或“对象”。