javascript - 如何添加
在每个新类别之后
问题描述
我有一个称为元素的对象数组,这些对象有两个值(name
和category
)。
[
{name : 'key1', category : 'tech'},
{name : 'key2', category : 'tech'},
{name : 'key3', category : 'tech'},
{name : 'cable1' , category : 'hard'}
{name : 'cable2' , category : 'hard'}
{name : 'cable3' , category : 'hard'}
{name : 'cable4' , category : 'hard'}
]
我想显示所有名称,但<hr>
每当到达新类别时添加一个
请帮助并感谢您的帮助。
解决方案
我将首先使用Array.prototype.reduce()按类别对您的对象进行分组,然后使用Array.prototype.map ()遍历每个类别:
const data = [
{name : 'key1', category : 'tech'},
{name : 'wire1' , category : 'misc'},
{name : 'key2', category : 'tech'},
{name : 'cable1' , category : 'hard'},
{name : 'key3', category : 'tech'},
{name : 'cable2' , category : 'hard'},
{name : 'wire2' , category : 'misc'}
];
const dataMap = data.reduce((acc, x) => {
acc[x.category] = [...(acc[x.category] || []), x];
return acc;
}, {});
const html = Object.entries(dataMap).map(([cat, items]) => {
return items.map(item => `<div>${item.name} ${item.category}</div>`).join('');
}).join('<hr>');
document.getElementById('app').innerHTML = html;
<div id="app"></div>
推荐阅读
- python - 无法重塑数组 - 绘制 GridSearchCV
- javascript - Ag-Grid getRowClass 找不到 css
- ios - 通过循环 SWIFT 将删除数据延迟到 Firestore 数组字段值中
- javascript - 如何使用节点 fs 在文件中间插入文本?
- reactjs - ReactJS TypeError:无法读取未定义的属性“toggleShow”
- visual-studio-code - 重新打开上次关闭的选项卡
- python - 使用scrapy时“TypeError:'str'对象不可调用”
- database - 然后在 EF Core 中包含多对多
- python - tk.Tk() 和 tk.Frame 之间的区别
- c++ - 使用 GraphicsPath::AddString() 抱怨“类 'GraphicsPath' 没有成员 'AddString'”