ユーザーは、製品データの最大 3 つのディメンションから選択して、必要な製品を選択できます。たとえば、私が知っているズボンの場合:
colors = ["red", "blue", "soylent green"]
waists = ["28W", "30W", "omg random description", "32W"] // The values are not always numeric
lengths = ["26L", "27L", "28L", "29L"]
DOM では次のように表されます。
<ul class="colors">
<li><button name="red" value="red"/></li>
<li><button name="blue" value="blue/></li>
…
</ul>
<ul class="waists">
<li><button name="28W" value="28W"/></li>
<li><button name="30W" value="30W"/></li>
…
</ul>
<!-- you get the picture -->
また、色、ウエスト、長さのすべての組み合わせを入手できないこともわかっています。部分的な構成が選択されると、HTML をマークアップして、その選択で使用可能な構成を示します。利用可能な組み合わせを提供するデータは、JSON として配信する必要があり、製品構成のsku (文字列) を配信する必要がありますが、意味のある任意の形式を取ることができます。それはどのような形を取るべきですか?
null
定義された値が sku であるか、未定義の値が使用できない構成である 3 次元配列を試しました。
[ // Arrays of colors
[ // Arrays of waists
[ // Array of lengths
"sku-1", "sku-2", "sku-3", null, "sku-4"
], [
"sku-abc", null, "sku-def"
]
], [
[ … ], …
] …
]
これは最もコンパクトですが、遅くて判読できないコードになります。顧客がウエスト サイズ ボタンにカーソルを合わせたとき、ウエスト配列でその値のインデックスを見つけ、ウエストの他のすべての寸法を削除してから、null
値のインデックスを取得して、それらを使用不可としてマークする必要があります。ここにはたくさんのfor
ループがあります。
私が試した別のアプローチは、ネストされたオブジェクトを使用することでした。利用できない組み合わせは単に定義されていません:
{
"red": {
"28W": {
"28L": "sku-123",
"30L": "sku-456"
…
}}}
しかし、ユーザーがたとえば にカーソルを合わせた場合、のプロパティを持たない"28L"
オブジェクトを見つけるために、すべての外側のオブジェクトを反復処理する必要があります。28L
利用できない構成を知りたいだけなら、それらの構成のリストを作成できますが、 も必要なためsku
、複雑になります。クライアント側で実行されることを念頭に置いて、サイズと速度 (および可能であれば読み取り可能なコード) の間で最良のトレードオフを行うデータ構造は何ですか?