我有一個像這樣的重型陣列:
[ {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'} ]
我需要按照optionName
分組,並在主數組中有兩行,像這樣:
[ { 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'}] } ]
如何在javascript中實現?
An ES6 solution using Map object:
這是我為這種情況編寫的程式碼片段。您可以將此功能新增至所有陣列:
您可以像這樣使用它。您只需傳遞一個定義如何分組資料的函數。
Working Fiddle
#如果需要,您可以將
{key: k, data: map[k]}
替換為{Name: k, Data: map[k]}
。這也是上面程式碼的更緊湊的ES6版本:
像這樣使用它: