从对象数组中提取数据

时间:2018-08-07 10:11:41

标签: 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
  ...     
]

目标是在chart.js上制作如下所示的图表:

[图表目标] [2]

我将需要循环数据集,因为我将添加更多数据,并且单独设置每个数据集的时间太长了。

感谢您的时间。

2 个答案:

答案 0 :(得分:0)

您可以这样做:

let array1 = [
  {
    param1: 10,
    param2: 20
  },
  {
    param1: 30,
    param2: 40
  }
]

let array2 = array1.map(item => Object.values(item));

console.log(array2); // prints [[10, 20], [30, 40]]

答案 1 :(得分:0)

首先,您需要为要绘制的每个属性创建一个数组;即:

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]
]

有关更多信息,请查看Array.forEach()Array.push()for...of文档

编辑

正如您在注释中指出的那样,您可以动态生成数组,以创建像var arrays = {};之类的对象。然后在forEach()中,或者在for...of中,您需要使用for...in循环遍历对象。您在循环头中声明的变量采用index的值,对于Arrays为数字,对于Objects为文字。您必须执行以下操作:

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]
}

要仅获取数组,请使用Object.values()

如果您无法想象这是如何工作的,建议您在Chrome开发者工具的控制台或Node的控制台中,或者在有实时反馈的任何地方举一些例子,在代码中间放置一些{{1} }变量