Javascript 从对象数组中提取数据
我有一个从数据库中获取的对象数组: [对象数组][1] 我想为每个值创建一个数组,但我无法找到一种方法,因为我是javascript的初学者 例如:Javascript 从对象数组中提取数据,javascript,chart.js,Javascript,Chart.js,我有一个从数据库中获取的对象数组: [对象数组][1] 我想为每个值创建一个数组,但我无法找到一种方法,因为我是javascript的初学者 例如: var Stats=[ [39,49,43,42,41,35], //SGW Value for each Object [37,44,49,46,52,42], //UD Value for each Object [8,11,8,8,16,15], //Virtual Value for each Object ...
var Stats=[
[39,49,43,42,41,35], //SGW Value for each Object
[37,44,49,46,52,42], //UD Value for each Object
[8,11,8,8,16,15], //Virtual Value for each Object
...
]
目标是在chart.js上制作一个如下所示的图表:
[图表目标][2]
我需要循环数据集,因为我将添加更多数据,并且单独设置每个数据集太长
谢谢您的时间。您可以这样做:
让数组1=[
{
第1点10分,
附件2:20
},
{
下午1时30分,
附件2:40
}
]
让array2=array1.map(item=>Object.values(item));
console.log(array2);//打印[[10,20],[30,40]]
首先,您需要为要打印的每个属性创建一个数组;i、 e:
var fsp = [],
msg = [],
sgw = [];
然后,您可以在数据集上循环并将数据放入每个数组中:
yourArray.forEach(function(obj){
//obj takes the value of each object in the database
fsp.push(obj.fsp);
msg.push(obj.msg);
sgw.push(obj.sgw);
})
或者,如果您更熟悉for
循环
for(var obj of yourArray){
fsp.push(obj.fsp);
msg.push(obj.msg);
sgw.push(obj.sgw);
}
最后,您可以按照示例中的说明创建一个数组
var result = [];
result.push(fsp, msg, sgw);
结果将是
[
[89, 59, 43, 60, 81, 34, 28, 58, 75, 41],
[77, 91, 4, 56, 6, 1, 42, 82, 97, 18],
[24, 34, 4, 13, 75, 34, 14, 41, 20, 38]
]
欲了解更多信息,请参阅,和文档
编辑
正如您在注释中指出的,您可以动态生成数组,创建一个对象,如var arrays={}代码>。然后在forEach()
中,或者如果for…of
,则需要使用for…in
循环在对象上循环。在循环头中声明的变量的值为index,数组为numeric,对象为literal。您必须执行以下操作:
yourArray.forEach(function(obj){
for(let index in obj){
if(!arrays[index]) // check if property has already been set and initialized
arrays[index] = []; // if not, it's initialized
arrays[index].push(obj[index]) // push the value into the array
}
})
请注意,对象被视为数组,因为您在运行时使用填充的变量访问其属性
结果将是:
arrays = {
fsp: [89, 59, 43, 60, 81, 34, 28, 58, 75, 41],
msg: [77, 91, 4, 56, 6, 1, 42, 82, 97, 18],
sgw: [24, 34, 4, 13, 75, 34, 14, 41, 20, 38]
}
要仅获取数组,请使用
如果你无法想象这是如何工作的,我建议你在Chrome开发者工具控制台或节点的控制台上做一些例子,或者在任何你可以得到实时反馈的地方,在代码的中间放上一些代码>控制台。这是一个多维数组。更好的是,你能举个例子说明你想怎么做吗?谢谢你的回答。是的,我已经这样做了,但对于较小的图形,对于较大的图形,在循环中创建每个数组,然后直接添加数据将非常有用。@Amoos51编辑了我的答案,以包含您所问的问题