首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在JSON中获取关键位置并进行修改

在JSON中获取关键位置并进行修改
EN

Stack Overflow用户
提问于 2022-06-03 08:00:13
回答 1查看 25关注 0票数 0

我如何知道JSON中是否存在"xxx“键?我需要格式化这些JSON:

代码语言:javascript
运行
复制
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"
        }
    }
}

至:

代码语言:javascript
运行
复制
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中给出值。我怎么能这么做?提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-03 08:18:02

您可以为此使用递归函数。每次看到具有$date键的对象时,执行new Date转换并将其返回给调用者:

代码语言:javascript
运行
复制
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对象的呈现。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72486461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档