如何将变量附加到for循环之外的另一个变量中?

时间:2019-06-06 16:49:50

标签: javascript

我将解释我的问题的主要目标。
我需要使用此特定的数据结构构建一个变量:

日期,值(换行符)

2019-05-14 12:00:00,7.8
2019-05-15 00:00:00,14.5
2019-05-17 05:00:00,1
2019-05-19 20:00:00,2.3
2019-05-28 08:00:00,33.4
2019-05-28 10:00:00,18.8
2019-05-28 12:00:00,11.5

这样做的目的是将具有这种确切结构的变量传递给HighCharts作为数据输入以创建图表。

为了检索并生成此数据,我进行了一个foor循环,该循环读取了一个名为“ datos” 的嵌套JSON数组(其中包含具有这些值的数组)。
在代码下面,您可以看到“ fecha” (日期)和“ valor” (值)变量的值。


for (var i = 0; i < datos.length; i++) { 
    var v = findPropPath(datos[i], 'v' );
    var object = datos[i], 
        path = v, 
        getValue = (o, p) => p.split('.').reduce((r, k) => r[k], o);

    var fecha = datos[i].data.time.s;   // fecha = "2019-05-14 12:00:00"
    var valor = getValue(object, path); // valor = "3.2"

    var comma = ",";
    var enter = "\n\r";
    var datosF = fecha.concat(comma, valor, enter);

    console.log(datosF);
};

如您所见,我尝试将所有内容连接到一个名为 datosF 的新变量中。
现在,我停留在这一点上,因为我不知道如何将每一行连接到一个新变量中,该变量将包含内部的所有行,如上面的输出示例所示。

目前, console.log(datosF)提供以下内容:

Console output

我什至不确定我的解决方案是否有效,我还不是菜鸟,也找不到合适的解决方案。

希望有人可以帮我这个忙。

1 个答案:

答案 0 :(得分:2)

很多写方法。修改最少的

var datosF = '' 
for (var i = 0; i < datos.length; i++) { 
    var v = findPropPath(datos[i], 'v' );
    var object = datos[i], 
        path = v, 
        getValue = (o, p) => p.split('.').reduce((r, k) => r[k], o);

    var fecha = datos[i].data.time.s;   // fecha = "2019-05-14 12:00:00"
    var valor = getValue(object, path); // valor = "3.2"

    var comma = ",";
    var enter = "\n\r";
    datosF = datosF.concat(fetcha, comma, valor, enter);

};

    console.log(datosF);

您必须将每次迭代的结果保存到外部作用域的变量中。

虽然这里有一些不良做法。例如在循环的每次迭代中创建一个函数。发布原始数据将导致最简洁的解决方案。