Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.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 如何构建';嵌套';来自timeseries数据的对象?_Javascript_Sql_Node.js_Object - Fatal编程技术网

Javascript 如何构建';嵌套';来自timeseries数据的对象?

Javascript 如何构建';嵌套';来自timeseries数据的对象?,javascript,sql,node.js,object,Javascript,Sql,Node.js,Object,我正在使用node.js和sql提取汽车的时间序列数据 我的查询提取node.js中的数据,它可以作为rawposdata提供: 我希望它具有以下形式(数组、obj或其他形式),以便我可以使用它: mypositiondata = [carID: 1234, contact: 'john doe', timestamp: { ts0: 10:00, ts1: 11:00, ts2: 12:00}, speed: {s0: 2

我正在使用node.js和sql提取汽车的时间序列数据

我的查询提取node.js中的数据,它可以作为rawposdata提供:

我希望它具有以下形式(数组、obj或其他形式),以便我可以使用它:

mypositiondata = 
[carID: 1234,
 contact: 'john doe',
 timestamp: { ts0: 10:00,
              ts1: 11:00,
              ts2: 12:00},
 speed:     {s0: 2.3
             s1: 2.4
             s2: 2.5}],
[carID: 9876,
 contact: 'bob wills',
 timestamp: { ts0: 10:00,
              ts1: 11:05,
              ts2: 12:00},
 speed:     {s0: 1.1
             s1: 1.1
             s2: 3.2}]
我在网上浏览了一些例子,阅读了下划线文档。等等,但我似乎无法解决这个问题。如何构造这些数据

我有50到150辆车要分类。
数据集中有更多的静态(例如:carID)和动态(例如:速度)数据点。

您可以使用
reduce
创建对象,并使用
object.values
将对象转换为数组

let mypositiondata = Object.values(rawposdata.reduce((c, v) => {
  c[v.carID] = c[v.carID] || {carID: v.carID,contact: v.contact,timestamp: {},speed: {}}
  c[v.carID].timestamp["ts" + Object.keys(c[v.carID].timestamp).length] = v.TimeStamp;
  c[v.carID].speed["s" + Object.keys(c[v.carID].speed).length] = v.Speed;
  return c;
}, {}));
以下是一个片段:

让rawposdata=[{carID:1234,联系人:'john doe',时间戳:'10:00',速度:2.3},{carID:1234,联系人:'john doe',时间戳:'11:00',速度:2.4},{carID:1234,联系人:'john doe',时间戳:'12:00',速度:2.5},{carID:9876,联系人:'bob wills',时间戳:'10:00',速度:1.1},{carID:9876,联系人:'bob wills',时间戳:'11:05',速度:1.1},{carID:9876,联系人:'bob wills',时间戳:'12:00',速度:3.2},];
让mypositiondata=Object.values(rawposdata.reduce)(c,v)=>{
c[v.carID]=c[v.carID]|{carID:v.carID,contact:v.contact,时间戳:{},速度:{}
c[v.carID].timestamp[“ts”+Object.keys(c[v.carID].timestamp).length]=v.timestamp;
c[v.carID].speed[“s”+Object.keys(c[v.carID].speed).length]=v.speed;
返回c;
}, {}));

console.log(mypositiondata);
您好,谢谢您的回答。这是我第一次在StackOverflow上发布:什么是代码段?如果复制到应用程序,应该是应该运行的代码吗?因为,当我尝试运行这两个“代码段”时,我被告知Object.values“不是一个函数。只需单击
运行代码片段
btn检查结果。是的,您可以复制代码并在浏览器@otkVery nice上执行!但是,在我的环境中仍然不起作用。我使用node v6.9.1。在顶部注释中,我在运行它时收到错误“Object.values不是函数”。(使用VS2017,node.js控制台应用程序)哦,也许这是IDE的问题。但它是否正常工作?
let mypositiondata = Object.values(rawposdata.reduce((c, v) => {
  c[v.carID] = c[v.carID] || {carID: v.carID,contact: v.contact,timestamp: {},speed: {}}
  c[v.carID].timestamp["ts" + Object.keys(c[v.carID].timestamp).length] = v.TimeStamp;
  c[v.carID].speed["s" + Object.keys(c[v.carID].speed).length] = v.Speed;
  return c;
}, {}));