タイトルを次のように書き換えます。メイン配列をグループ化し、各グループにフィールドとサブ配列を追加します。
P粉190443691
2023-08-24 21:18:20
<p>次のような重い配列があります: </p>
<pre class="brush:php;toolbar:false;">[
{Id: 1、名前: '赤'、オプション名: '色'}、
{Id: 2、名前: '黄'、オプション名: '色'}、
{Id: 3、名前: '青'、オプション名: '色'}、
{Id: 4、名前: 'Green'、オプション名: 'Color'}、
{Id: 7、名前: 'ブラック'、オプション名: 'カラー'}、
{Id: 8、名前: 'S'、オプション名: 'サイズ'}、
{Id: 11、名前: 'M'、オプション名: 'サイズ'}、
{Id: 12、名前: 'L'、オプション名: 'サイズ'}、
{Id: 13、名前: 'XL'、オプション名: 'サイズ'}、
{Id: 14、名前: 'XXL'、オプション名: 'サイズ'}
]</pre>
<p>次のように、<code>optionName</code> でグループ化し、メイン配列に 2 つの行を含める必要があります。
<pre class="brush:php;toolbar:false;">[
{
名前:「カラー」、
データ:[{Id: 1, 名前: 'レッド'},
{ID: 2、名前: 'イエロー'}、
{ID: 3、名前: 'ブルー'}、
{ID: 4、名前: 'グリーン'}、
{ID: 7、名前: 'ブラック'}]
}、{
名前: 'サイズ'、
データ:[{Id: 8, 名前: 'S'},
{ID: 11、名前: 'M'}、
{ID: 12、名前: 'L'}、
{ID: 13、名前: 'XL'}、
{ID: 14、名前: 'XXL'}]
}
]</pre>
<p>JavaScriptで実装するにはどうすればよいですか? </p>
An ES6 solution using Map object:
これは、この状況のために私が書いたコードスニペットです。この関数はすべての配列に追加できます:
リーリーこんな感じで使えます。データをグループ化する方法を定義する関数を渡すだけです。
リーリーワーキングフィドル
必要に応じて、
{key: k, data: map[k]}
を{Name: k, Data: map[k]}
に置き換えることができます。これは、上記のコードのよりコンパクトな ES6 バージョンでもあります:
リーリー次のように使用します:
リーリー