javascript - 按顺序将对象推入数组
问题描述
在下面的 JSON 结构中,
[
{
"type": "heading-1",
"text": "A title",
},
{
"type": "ordered-list-item",
"text": "Ordered Item A",
},
{
"type": "unordered-list-item",
"text": "Ordered Item B",
},
{
"type": "heading-2",
"text": "A title",
},
{
"type": "ordered-list-item",
"text": "Ordered Item A",
},
{
"type": "unordered-list-item",
"text": "Ordered Item B",
}
];
我需要将所有作为ordered-list-item
&的类型移动unordered-list-item
到新对象中。像下面这样的东西,
{
"type": 'list',
"items": [
{
"type": "ordered-list-item",
"text": "Ordered Item A",
},
{
"type": "unordered-list-item",
"text": "Ordered Item B",
}
]
}
最重要的是,我需要维持秩序
例如,ordered-list-item
&unordered-list-item
应该被推入新对象,直到type
匹配。
所以有了上面的Json结构,下面是预期的输出
[
{
"type": "heading-1",
"text": "A title",
},
{
"type": "heading-2",
"text": "A title",
},
{
"type": 'list',
"items": [
{
"type": "ordered-list-item",
"text": "Ordered Item A",
},
{
"type": "unordered-list-item",
"text": "Ordered Item B",
}
]
},
{
"type": "heading-1",
"text": "A title",
},
{
"type": 'list',
"items": [
{
"type": "ordered-list-item",
"text": "Ordered Item A",
},
{
"type": "unordered-list-item",
"text": "Ordered Item B",
}
]
},
]
如何才能做到这一点 ?
解决方案
您可以在任何数组上使用 array.filter 来创建一个匹配条件的新数组(以相同的顺序)
const orderedList = yourArray.filter(a => a.type === 'ordered-list-item');
const unOrderedList = yourArray.filter(a => a.type === 'unordered-list-item');
然后只需使用新的过滤数组构建新的 json 对象。
推荐阅读
- r - 如何合并 2 列并将它们分开?
- java - 哪个是使用@Singleton EJB 和@Asynchronous 多线程的正确方法?
- python - 为每个组标记数据框中的异常值
- ruby-on-rails - 从 mongodb 中删除所有 errbit 错误的最快方法是什么?
- python - 如何根据另一个数据框设置列值
- wxpython - 如何在wxpython中设置目录路径
- javascript - 检查字符串是否在浏览器中有效 javascript
- linux - Virtual address to physical address and reverse in android linux kernel
- java - 使用 Java LocalDate 从当前日期减去财政年度季度
- javascript - 仅页面呈现数据表标题而不是信息