【问题标题】:Seeking advice how to process this nested JSON/Object寻求建议如何处理这个嵌套的 JSON/Object
【发布时间】:2021-01-12 13:20:18
【问题描述】:

我有一个嵌套的 JSON 并希望得到结果数组,这怎么可能?关于我如何做到这一点的任何提示?我需要在循环中使用嵌套器吗?高阶函数等?我是嵌套对象的新手,任何提示或好的参考都将受到重视!

// 调用 db.save() 后,const db 会显示所需的结果。我要它 包括日期、符号(美元等)和它的价值 - 都包裹在自己的对象中

const db = [
{ Date: '1999-01-05', AUD: 1.8944, SEK: 9.4025, USD: 1.179 },
{ Date: '1999-01-06', AUD: 1.882, SEK: 9.305, USD: 1.1743 },

];

// 我在获取时收到的 json

const json = {
rates: {
    '1999-01-08': {
        AUD: 1.8406,
        SEK: 9.165,
        USD: 1.1659,
    },
    '1999-01-06': {
        AUD: 1.882,
        SEK: 9.305,
        USD: 1.1743,
    },
    '1999-01-07': {
        AUD: 1.8474,
        SEK: 9.18,
        USD: 1.1632,
    },
    '1999-01-05': {
        AUD: 1.8944,
        SEK: 9.4025,
        USD: 1.179,
    },
},
start_at: '1999-01-05',
base: 'EUR',
end_at: '1999-01-10',

};

【问题讨论】:

  • 为什么这是您的预期结果?将您的对象带到db 数组的逻辑是什么?

标签: javascript json nested-object


【解决方案1】:

这是一个使用嵌套 for 循环和 Object.entires 从对象中获取键/值对的解决方案。它创建一个对象数组,就像您想要的结果一样。 (不按确切顺序,因为 Javascript 不关心保持对象排序)。

function save(data) {
    const db = []
    
    for (const [key, value] of Object.entries(data.rates)) {
        rate = { 'Date': key }
        for (const [_key, _value] of Object.entries(value)) {
            rate[_key] = _value
        }
        db.push(rate)
    }
    return db
}

用法;在您发布的示例中,将是:

db = save(json)

【讨论】:

    【解决方案2】:

    感谢您的回答,我没有让它工作,因为我可能搞砸了一些事情或解释得不好,道歉。但是看到你使用嵌套的 for 循环帮助我弄清楚了这种方法,它导致从特定日期开始的每种货币和汇率都在一个只有键值的对象中。

            const db = [];
        for (const prop in json.rates) {
          Object.keys(json.rates[prop]).forEach((element) => {
            const obj = {
              date: prop,
              symbol: element,
              rate: json.rates[prop][element],
              base: json.base,
            };
            db.push(obj);
          });
        }
        console.log(db);
    

    在此处输入代码

    enter code here
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-22
      • 2020-12-02
      • 1970-01-01
      • 2016-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多