【问题标题】:How to remap json key-value mapping in javascript/ typescript?如何在 javascript/typescript 中重新映射 json 键值映射?
【发布时间】:2019-04-15 10:04:46
【问题描述】:

给定

{"a": {"name": "king", "firstname": "Thomas"},"b": {"age": "21"}}

我正在尝试找出一种简单的方法将其转换为

{"name": "king","firstname": "Thomas","age": "21"}

在 Javascript/Angular 中。也许有人有个好主意,我会非常感激。 我正在尝试更改响应以使其适合 API 请求。

编辑:我改变了问题,我忘了提到,我在第二级有多个键值对。

我想要实现的是摆脱 json 文件中的第一级密钥,因为我将其发送到的 API 没有这些,它只使用第二级中的密钥

【问题讨论】:

    标签: javascript json angular mapping key-value


    【解决方案1】:

    你可以试试这样的:

    const original = {"a": {"name": "thomas"},"b": {"age": "21"}}
    const result = Object.values(original)
    

    或者,如果您需要更多的灵活性:

    const original = {"a": {"name": "thomas"},"b": {"age": "21"}}
    const result = []
    Object.keys(original).forEach( key => result.push(original[key]) )
    

    热烈的问候

    【讨论】:

    • 请看一下:typescript-v5ptkv.stackblitz.io 对我来说它有效。只有“Object.values”不适用于所有浏览器。
    • 我改变了问题,我忘了说,我在第二级有多个键值对。但是非常感谢您的回答!
    【解决方案2】:

    这应该适合你。我向对象添加了第三个属性,以向您展示如果您有两个具有相同属性的对象会发生什么(稍后迭代的对象会覆盖之前的对象,但是由于您不能依赖对象中的属性顺序,因此可能会产生意想不到的结果)。如果您的所有属性都没有重复,那么不用担心。

    var data = {"a": {"name": "thomas"},"b": {"age": "21"},"c": {"age": "22"}};
    
    // "c" will overwrite "b"
    var converted = Object.keys(data).reduce((o, e) => Object.assign(o, data[e]), {});
    // Object.keys(data) gives the array [“a”, “b”, “c”]
    // Reduce that array to an object by assigning, to a new empty object,
    // the properties of the objects found in each property of data
    
    console.log(converted);

    【讨论】:

    • 我想要实现的是摆脱 json 文件中的第一级密钥,因为我发送给它的 API 没有这些,它只使用二级
    • 你能简单解释一下你的代码在做什么吗?
    猜你喜欢
    • 1970-01-01
    • 2017-05-02
    • 2017-08-08
    • 1970-01-01
    • 2010-10-05
    • 2011-10-08
    • 2021-09-04
    • 2018-06-18
    • 2013-02-23
    相关资源
    最近更新 更多