我将解释我的问题的主要目标。
我需要使用此特定的数据结构构建一个变量:
日期,值(换行符)
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)提供以下内容:
我什至不确定我的解决方案是否有效,我还不是菜鸟,也找不到合适的解决方案。
希望有人可以帮我这个忙。
答案 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);
您必须将每次迭代的结果保存到外部作用域的变量中。
虽然这里有一些不良做法。例如在循环的每次迭代中创建一个函数。发布原始数据将导致最简洁的解决方案。