bob*_*n56 2 javascript foreach loops group-by reactjs
我有一个具有不同值的对象数组
items=[{id:1,category:"cat_1" , title:"My title 1"},{id:2,category:"cat_2" , title:"My title 2"},{id:6,category:"cat_1" , title:"Another title 1"},{id:1,category:"cat_3" , title:"My title 3"},{id:8,category:"cat_1" , title:"Third Title"},{id:2,category:"cat_2" , title:"Another title 2 "}]
Run Code Online (Sandbox Code Playgroud)
我使用数组映射列出对象并将其显示为
{
items.map((item) => (
<h1>{item.category}</h1>
<p>{item.title}</p>
))}
Run Code Online (Sandbox Code Playgroud)
我的问题是如何迭代项目,以便按类别对项目进行分组,如下所示
cat_1
- My title 1
- Another title 1
- My title 3
cat_2
- My title 2
- Another title 2
cat_3
-Third Title
Run Code Online (Sandbox Code Playgroud)
Cer*_*nce 10
用途.reduce:
const items = [{
id: 1,
category: "cat_1",
title: "My title 1"
}, {
id: 2,
category: "cat_2",
title: "My title 2"
}, {
id: 6,
category: "cat_1",
title: "Another title 1"
}, {
id: 1,
category: "cat_3",
title: "My title 3"
}, {
id: 8,
category: "cat_1",
title: "Third Title"
}, {
id: 2,
category: "cat_2",
title: "Another title 2 "
}];
const cats = items.reduce((catsSoFar, { category, title }) => {
if (!catsSoFar[category]) catsSoFar[category] = [];
catsSoFar[category].push(title);
return catsSoFar;
}, {});
console.log(cats);Run Code Online (Sandbox Code Playgroud)
我在很多项目中使用 lodash 作为通用实用带。如果你决定做类似的事情——那就很简单:
\n\nconst data = [{\r\n id: 1,\r\n category: "cat_1",\r\n title: "My title 1"\r\n}, {\r\n id: 2,\r\n category: "cat_2",\r\n title: "My title 2"\r\n}, {\r\n id: 6,\r\n category: "cat_1",\r\n title: "Another title 1"\r\n}, {\r\n id: 1,\r\n category: "cat_3",\r\n title: "My title 3"\r\n}, {\r\n id: 8,\r\n category: "cat_1",\r\n title: "Third Title"\r\n}, {\r\n id: 2,\r\n category: "cat_2",\r\n title: "Another title 2 "\r\n}];\r\n\r\nconst groups = _.groupBy(data, \xc2\xa0\'category\');\r\n\r\nconsole.log(groups);Run Code Online (Sandbox Code Playgroud)\r\n<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.5/lodash.min.js"></script>Run Code Online (Sandbox Code Playgroud)\r\n| 归档时间: |
|
| 查看次数: |
5461 次 |
| 最近记录: |