我如何知道JSON中是否存在"xxx“键?我需要格式化这些JSON:
let beforeOne = {
"id": "123",
"aDate": {
"$date": "2022-06-24T00:00:00Z"
}
}
let beforeTwo = {
"id": "123",
"firstDate": {
"$date": "2022-06-24T00:00:00Z"
},
"day": {
"today": {
"$date": "2022-06-24T00:00:00Z"
},
"tomorrow": {
"$date": "2022-06-24T00:00:00Z"
}
}
}至:
let afterOne = {
"id": "123",
"aDate": new Date("2022-06-24T00:00:00Z")
}
let afterTwo = {
"id": "123",
"firstDate": new Date("2022-06-24T00:00:00Z"),
"day": {
"today": new Date("2022-06-24T00:00:00Z"),
"tomorrow": new Date("2022-06-24T00:00:00Z")
}
}因此,基本上,我需要在任何地方找到"$date“,删除它,并使用新的Date()构造函数从parentKey .$parentKey中给出值。我怎么能这么做?提前感谢!
发布于 2022-06-03 08:18:02
您可以为此使用递归函数。每次看到具有$date键的对象时,执行new Date转换并将其返回给调用者:
function transformDates(obj) {
return Object(obj) !== obj ? obj // Primitive
// When it has $date:
: obj.hasOwnProperty("$date") ? new Date(obj.$date)
// Recursion
: Object.fromEntries(
Object.entries(obj).map(([k, v]) => [k, transformDates(v)])
);
}
let beforeOne = {"id": "123","aDate": {"$date": "2022-06-24T00:00:00Z"}}
console.log(transformDates(beforeOne));
let beforeTwo = {"id": "123","firstDate": {"$date": "2022-06-24T00:00:00Z"},"day": {"today": {"$date": "2022-06-24T00:00:00Z"},"tomorrow": {"$date": "2022-06-24T00:00:00Z"}}}
console.log(transformDates(beforeTwo));
注意,Stack代码段在输出日期对象时将其转换为字符串。这不是在浏览器的控制台中看到的,在控制台中,您确实可以获得Date对象的呈现。
https://stackoverflow.com/questions/72486461
复制相似问题