问题描述
我有一个嵌套的JSON,想要结束于结果数组,这怎么可能?关于如何实现此目标的任何提示?我是否需要在/循环中使用嵌套器?高阶函数等?我是嵌套对象的新手,任何技巧或参考都将不胜感激!
// const db在调用db.save()之后显示所需的结果。我要它 包括日期,符号(美元等)及其值-全部包裹在自己的对象中
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,USD: 1.1743,'1999-01-07': {
AUD: 1.8474,SEK: 9.18,USD: 1.1632,'1999-01-05': {
AUD: 1.8944,USD: 1.179,start_at: '1999-01-05',base: 'EUR',end_at: '1999-01-10',
};
解决方法
这是使用嵌套for
循环和https://github.com/modelmapper/modelmapper/blob/master/examples/src/main/java/org/modelmapper/flattening/example2/FlatteningExample2.java从对象中获取键/值对的解决方案。就像您想要的结果一样,它创建了一系列对象。 (不完全按顺序排列,因为Java脚本不关心对象的排序)。
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)
,
感谢您的回答,我没有让它起作用,因为我很可能弄乱了某些东西或解释得很糟,对不起。但是看到您使用嵌套的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