首页 > 解决方案 > 我需要从不同的 javascript 文件中访问数据,并将其更改为字符串

问题描述

我需要访问这种格式的数据才能与 Chart.js 一起使用:

var dataArrays = {
  id: 1,
  time : [1543855884861,1543855889279],
  parsetTimestamp: ["3 Dec 2018 17:51:24","3 Dec 2018 17:51:29"],
  temperature: [23.4,24.4],
  humidity: [38,40],
  light: [1000,1100],
  soil: [750,800],
  fanIn: [1,0],
  fanOut: [0,1],
  ledIntensity: [1024,1024]
 }

我需要从不同的 js 文件中获取数据,格式如下:

var data = [{
    name: 'tube',
    time: 1546614557692,
    temperature: 23,
    humidity: 49,
    light: 1718,
    soil: 1024,
    fanIn: 0,
    fanOut: 0,
    ledIntensity: 1024
  },
  {
    name: 'tube',
    time: 1546614557697,
    temperature: 23,
    humidity: 49,
    light: 1721,
    soil: 1024,
    fanIn: 0,
    fanOut: 0,
    ledIntensity: 1024
  }
]

我想我可以像这样添加来自不同变量的数据:

var dataArrays.time = [data1.time, data2.time];

但我没有两个变量,我只有一个包含所有数据,它位于不同的文件中。

有没有办法做到这一点?

标签: javascriptstring

解决方案


如果您只是想合并数组的对象,您可以使用它Array.prototype.reduce来执行此操作。

只需遍历数组中包含的对象的键data并合并重复的键并将它们放入数组中并将其分配给累积的merged对象。

var data = [{
    name: 'tube',
    time: 1546614557692,
    temperature: 23,
    humidity: 49,
    light: 1718,
    soil: 1024,
    fanIn: 0,
    fanOut: 0,
    ledIntensity: 1024
  },
  {
    name: 'tube',
    time: 1546614557697,
    temperature: 23,
    humidity: 49,
    light: 1721,
    soil: 1024,
    fanIn: 0,
    fanOut: 0,
    ledIntensity: 1024
  }
]

var merged = data.reduce((acc, ele) =>{
for(key in ele){
    acc[key] = acc[key] ? acc[key].concat(ele[key]) : [ele[key]];
}
return acc;
},{});

console.log(merged);


推荐阅读