格式化JSON以使用现有for/in-loop Javascript
希望我能在这个问题上得到一些帮助。首先,下面的代码工作正常。JSON是从一个只包含此JSON的文件中读入的,For-in循环对其进行迭代并填充而不产生任何问题格式化JSON以使用现有for/in-loop Javascript,javascript,json,for-in-loop,Javascript,Json,For In Loop,希望我能在这个问题上得到一些帮助。首先,下面的代码工作正常。JSON是从一个只包含此JSON的文件中读入的,For-in循环对其进行迭代并填充而不产生任何问题 { "ID:1": { "employee": "Mike", "start": { "t": "2018-08-01", "v": 28 }, "end": { "t": "2018-08-14", "v": 39 } }, "ID:2": { "employee": "John
{
"ID:1": {
"employee": "Mike",
"start": {
"t": "2018-08-01",
"v": 28
},
"end": {
"t": "2018-08-14",
"v": 39
}
},
"ID:2": {
"employee": "John",
"start": {
"t": "2018-08-01",
"v": 43
},
"end": {
"t": "2018-08-14",
"v": 35
}
},
}
function get_data(root,r_scale){
var my_data = [],
x=0;
for (r in root){
start_t = root[r]['start'].t
start_v = root[r]['start'].v
end_t = root[r]['end'].t
end_v = root[r]['end'].v
change = Math.abs(start_v - end_v)
my_data.push({
change: change,
id: x,
employee: root[r].employee,
start_t: start_t,
start_v: start_v,
end_t: end_t,
end_v: end_v
})
x = x + 1
}
return my_data
};
不幸的是,我需要将上面的JSON放入一个包含其他JSON对象的较大blob中。所以,我需要这样格式化它:
"employees": [
{
"ID": 1,
"employee": "Mike",
"start": {
"t": "2018-08-01",
"v": 28
},
"end": {
"t": "2018-08-14",
"v": 39
}
},
{
"ID": 2,
"employee": "John",
"start": {
"t": "2018-08-01",
"v": 43
},
"end": {
"t": "2018-08-14",
"v": 35
}
}
]
我做不到。我可以将“.employees”附加到循环中的根“root.employees[r]…”,并在运行调试器时查看数据。但每次我得到“UncaughtTypeError:无法读取未定义的属性't'
感谢您的帮助!我不确定您为什么会出现未定义的错误,但您的代码可以简化。您实际上只映射原始数据对象的条目,添加运行索引和
更改
属性。使用对象.值
()可以按如下方式完成:
const数据={
“ID:1”:{
“雇员”:“迈克”,
“开始”:{
“t”:“2018-08-01”,
“v”:28
},
“结束”:{
“t”:“2018-08-14”,
“v”:39
}
},
“ID:2”:{
“雇员”:“约翰”,
“开始”:{
“t”:“2018-08-01”,
“v”:43
},
“结束”:{
“t”:“2018-08-14”,
“v”:35
}
},
};
const convert=(数据)=>{
const employees=Object.values(数据)
.map({employee,start,end},index)=>({
id:索引,
雇员,,
开始
完,,
更改:Math.abs(start.v-end.v)
}));
返回{雇员};
};
console.log(convert(data))
为什么不调用get_data(root.employees,r_scale)
而不对函数进行任何更改?Igor,谢谢!尽管这会引发一个错误,但它让我想到在for in参数中附加for(r in root.employees)“它就像一个符咒。这是一个更好的方式去做这件事!我继承了这个代码库,所以我正在慢慢推进并合并成一个更大的blob。比起其他选择,我更喜欢现在的地图。我以后一定会用这个。再次感谢。