我需要不同的 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 的练习。因此,我将不胜感激任何有关解决方案的建议或一些要搜索的关键字!
有一个简单的解决方案,使用
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);