使用 Javascript 更改 json 值顺序

问题描述 投票:0回答:1

我需要不同的 JSON 字符串值顺序。 我使用 php 从数据库查询创建一个 JSON 字符串,如下所示:

$lbtbs = $DB->get_records('lbtb_eintraege');
$lbtb_json = json_encode($lbtbs, JSON_PRETTY_PRINT);

数据库在“Moodle”系统中读出。 根据文档,返回一个对象数组。

我使用 php 提交的 JSON 字符串如下所示:

{id: '1', date: '2024-05-05', start: '1', description: 'fdsfdsfd', standort: 'sz', …}

在 Javascript 中,我用以下方法解析 JSON 字符串:

this.events = JSON.parse(decodeURI(this.lbtbdata));

但是,我需要以不同的方式嵌套字符串。应首先显示日期,然后是 ID 和 ID 中的其余值。 举个例子:

[DATE]
 - [ID]
     - [REST DATA]

我尝试过这样的。

for (const date of Object.keys(this.events)) {
                    for (const id of Object.keys(this.events[date])) {
                        const event = new Event(this.events[date][id]);
                        this.events[date][id] = event;
                    }
                }

我还缺少一些关于 JavaScript 的练习。因此,我将不胜感激任何有关解决方案的建议或一些要搜索的关键字!

javascript json moodle
1个回答
0
投票

有一个简单的解决方案,使用

Array#reduce()
和 nullish 合并赋值:

const data = [{id: '1', date: '2024-05-05', start: '1', description: 'fdsfdsfd', standort: 'sz'}, {id: '2', date: '2024-05-05', start: '1', description: 'fdsfdsfd', standort: 'sz'}];


const result = data.reduce((r, {date, id, ...rest}) => ((r[date]??={})[id] = rest, r), {});

console.log(result);

© www.soinside.com 2019 - 2024. All rights reserved.