Javascript 如何构建';嵌套';来自timeseries数据的对象?
我正在使用node.js和sql提取汽车的时间序列数据 我的查询提取node.js中的数据,它可以作为rawposdata提供: 我希望它具有以下形式(数组、obj或其他形式),以便我可以使用它: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
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;
}, {}));