Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从未知数量的包含JSON对象的列表中提取元素_Javascript_Arrays_Json - Fatal编程技术网

Javascript 从未知数量的包含JSON对象的列表中提取元素

Javascript 从未知数量的包含JSON对象的列表中提取元素,javascript,arrays,json,Javascript,Arrays,Json,我正在尝试制作图表组件,它将呈现从API获取的数据。 响应数据是包含JSON对象的等长数组的数组。例如: 一个列表中对象的时间戳将始终对应于其他列表中对象的时间戳 图表组件需要一个包含一个ts值和n个其他值的n元素数组数组,其中n是响应数组的长度。如果响应数组的长度为2,则生成的列表应如下所示: [“2021-04-11 12:36:23”,6,8),“2021-04-11 12:38:23”,2,7],…] 我的问题是提取这个数组。我试图对响应数组进行分解,将它们转换为单个变量,然后可以使用

我正在尝试制作图表组件,它将呈现从API获取的数据。 响应数据是包含JSON对象的等长数组的数组。例如:

一个列表中对象的时间戳将始终对应于其他列表中对象的时间戳

图表组件需要一个包含一个ts值和n个其他值的n元素数组数组,其中n是响应数组的长度。如果响应数组的长度为2,则生成的列表应如下所示:

[“2021-04-11 12:36:23”,6,8),“2021-04-11 12:38:23”,2,7],…]

我的问题是提取这个数组。我试图对响应数组进行分解,将它们转换为单个变量,然后可以使用foreach迭代这些变量。我没能做到这一点

这是我目前的“解决方案”:

response=[{ts:“2021-04-11 12:36:23”,v:6},{ts:“2021-04-11 12:38:23”,v:8}],{ts:“2021-04-11 12:36:23”,v:2},{ts:“2021-04-11 12:38:23”,v:7}]
响应[0]。映射((e,i)=>{
常数arr=[];
日期=新日期(e[“ts”]);
arr.push(日期);
arr.push(e[“v”]);
arr.push(响应[1][i][v]);
返回arr

})
您可以映射数组的数组,并映射这些数组中的每个元素。最后,将它们缩减为一个包含日期的数组

响应=[
[{
ts:“2021-04-1112:36:23”,
v:6
}, {
ts:“2021-04-1112:38:23”,
v:8
}],
[{
ts:“2021-04-1112:36:23”,
v:2
}, {
ts:“2021-04-1112:38:23”,
v:7
}]
]
console.log(
response.map(
(l,)=>l.map(
(e,i)=>新日期(e[“ts”])
)
)
)
console.log(
response.map(
(l,)=>l.map(
(e,i)=>新日期(e[“ts”])
)
).减少((a,b)=>a.concat(b))
)
尝试以下解决方案:

let output=[];
回应=[{ts:“2021-04-11 12:36:23”,v:6},{ts:“2021-04-11 12:38:23”,v:8},{ts:“2021-04-11 12:36:23”,v:2},{ts:“2021-04-11 12:38:23”,v:7}]
用于(让sset响应){
用于(sset的出租项目){
if(输出类型[item.ts]!='undefined'&&output[item.ts].length>0){
输出[item.ts].push(item.v);
}否则{
输出[item.ts]=[item.ts,item.v];
}
}
}

console.log(output)
I最终在@sssurii answer上展开。图表组件需要数据对象具有相同的维度,这就是填充空字符串的原因

代码:

let output=[];
设temp=[];
设i=1;
让dataLength=dataFetch.length;
for(让数据获取的res){
for(让一组res){
let date=新日期(set.ts).toISOString();
如果(温度[日期]的类型!=“未定义”和温度[日期]。长度>0){
温度[日期]。拼接(i,0,设置为v);
}否则{
temp[date]=新数组(dataLength+1)。填充(“”);
临时[日期][0]=日期;
温度[日期]。拼接(i,0,设置为v);
}
输出推送(温度[日期]);
}
i+=1;