【发布时间】:2017-03-05 09:16:01
【问题描述】:
我有这段 ES6 React 代码,它将 MiniIcon 数组填充到页面上。
const MiniIcons = ({miniicons}) => ( <div id="application"> {
miniicons.map(miniicon => ( <MiniIcon key={minicon.id} id={miniicon.id} title={miniicon.name} handleOpenButton={this.handleMiniiconOpen.bind(this)} /> )
)} </div> );
填充“迷你图标”的 JSON:
[
{"id":"1", "name":"chicken", "application":"1"},
{"id":"3", "name":"nuggets", "application":"1"},
{"id":"8", "name":"fries", "application":"2"}
]
这样的列表:
<div id="application">
<div class="minicion"></div>
<div class="minicion"></div>
<div class="minicion"></div>
</div>
但是,其中一些 MiniIcon 是超集应用程序的一部分。我对这个 ES6 语法很陌生,所以我该如何修改它,以便可以为每个应用程序不同的元素创建一个周围的 div,所以对于上面的例子:
<div id="application1">
<div class="minicion"></div>
</div>
<div id="application2">
<div class="minicion"></div>
<div class="minicion"></div>
</div>
【问题讨论】:
-
您需要按应用程序字段对数组进行分组,然后映射键以创建您的
<div id="applicationN">项目,并在每个值上嵌套映射(这是一个小图标数组)来创建您的<div class="miniicon">。您可以使用reduce进行分组,但是像 lodash 这样的库会更方便。 -
是的,这里:
miniicons.reduce((groups, curr) => ({...groups, [curr.application]: [...(groups[curr.application] || []), curr]}), {})。 -
这与 ES6 或(React-specific?)语法无关,你只需要一个分组算法。
标签: javascript json reactjs ecmascript-6