將標題重寫為:將主數組分組,並在每個分組中新增欄位和子數組
P粉190443691
2023-08-24 21:18:20
<p>我有一個像這樣的重型陣列:</p>
<pre class="brush:php;toolbar:false;">[
{Id: 1, Name: 'Red', optionName: 'Color'},
{Id: 2, Name: 'Yellow', optionName: 'Color'},
{Id: 3, Name: 'Blue', optionName: 'Color'},
{Id: 4, Name: 'Green', optionName: 'Color'},
{Id: 7, Name: 'Black', optionName: 'Color'},
{Id: 8, Name: 'S', optionName: 'Size'},
{Id: 11, Name: 'M', optionName: 'Size'},
{Id: 12, Name: 'L', optionName: 'Size'},
{Id: 13, Name: 'XL', optionName: 'Size'},
{Id: 14, Name: 'XXL', optionName: 'Size'}
]</pre>
<p>我需要按照<code>optionName</code>分組,並在主數組中有兩行,像這樣:</p>
<pre class="brush:php;toolbar:false;">[
{
Name: 'Color',
Data:[{Id: 1, Name: 'Red'},
{Id: 2, Name: 'Yellow'},
{Id: 3, Name: 'Blue'},
{Id: 4, Name: 'Green'},
{Id: 7, Name: 'Black'}]
}, {
Name: 'Size',
Data:[{Id: 8, Name: 'S'},
{Id: 11, Name: 'M'},
{Id: 12, Name: 'L'},
{Id: 13, Name: 'XL'},
{Id: 14, Name: 'XXL'}]
}
]</pre>
<p>如何在javascript中實現? </p>
An ES6 solution using Map object:
這是我為這種情況編寫的程式碼片段。您可以將此功能新增至所有陣列:
您可以像這樣使用它。您只需傳遞一個定義如何分組資料的函數。
Working Fiddle
#如果需要,您可以將
{key: k, data: map[k]}
替換為{Name: k, Data: map[k]}
。這也是上面程式碼的更緊湊的ES6版本:
像這樣使用它: