gpt4 book ai didi

javascript - 格式化 JSON 以使用现有的 for/in 循环 Javascript

转载 作者:行者123 更新时间:2023-11-29 10:28:41 27 4
gpt4 key购买 nike

希望我能在这个问题上得到一些帮助。首先,下面的代码工作正常。从仅包含此 JSON 的文件中读取 JSON,For in Loop 循环遍历它并毫无问题地填充。

{

"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]...”,并在运行调试器时查看数据。但每次我都收到“未捕获的类型错误:无法读取未定义的属性‘t’。

感谢您的帮助!

最佳答案

我不确定您为什么会收到未定义的错误,但您的代码可以简化。您实际上只映射原始数据对象的条目,添加运行索引和 change 属性。这可以使用 Object.values ( MDN ) 按如下方式完成:

const data = {

"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
}
},
};

const convert = (data) => {
const employees = Object.values(data)
.map(({ employee, start, end }, index) => ({
id: index,
employee,
start,
end,
change: Math.abs(start.v - end.v)
}));
return { employees };
};


console.log(convert(data))

请注意,您也可以使用 for-of loop 直接获取原始数据的条目。 .这样,您就不需要 root[r] 来使用 key 访问条目。

关于javascript - 格式化 JSON 以使用现有的 for/in 循环 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52018275/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com