javascript - 在商城開發(fā)中,商品詳情頁里面的屬性規(guī)格,大家傾向于用哪種json數(shù)據(jù)格式?如下
問題描述
var sys_item = {'mktprice': '13.00','price': '6.80','sys_attrprice': { '3_13': {'price': '6.80','mktprice': '13.00' }, '3_14': {'price': '7.80','mktprice': '14.00' }, '3_16': {'price': '8.80','mktprice': '15.00' }, '3_17': {'price': '9.80','mktprice': '16.00' }, '4_13': {'price': '6.80','mktprice': '13.00' }, '4_14': {'price': '7.80','mktprice': '14.00' }, '4_16': {'price': '8.80','mktprice': '15.00' }, '4_17': {'price': '9.80','mktprice': '16.00' }, '8_13': {'price': '6.80','mktprice': '13.00' }, '8_14': {'price': '7.80','mktprice': '1400' }, '8_16': {'price': '8.80','mktprice': '15.00' }, '8_17': {'price': '9.80','mktprice': '16.00' }, '9_13': {'price': '6.80','mktprice': '13.00' }, '9_14': {'price': '7.80','mktprice': '14.00' }, '9_16': {'price': '8.80','mktprice': '15.00' }, '9_17': {'price': '9.80','mktprice': '16.00' }, '10_13': {'price': '6.80','mktprice': '13.00' }, '10_14': {'price': '7.80','mktprice': '14.00' }, '10_16': {'price': '8.80','mktprice': '15.00' }, '10_17': {'price': '9.80','mktprice': '16.00' }, '12_13': {'price': '6.80','mktprice': '13.00' }, '12_14': {'price': '7.80','mktprice': '14.00' }, '12_16': {'price': '8.80','mktprice': '15.00' }, '12_17': {'price': '9.80','mktprice': '16.00' }} };
上面當(dāng)我選中:
顏色的data-aid為3,規(guī)格的data-aid為13時(shí),默認(rèn)價(jià)格更新為3_13對(duì)應(yīng)的價(jià)格 data-aid為3, 規(guī)格的data-aid為14時(shí),默認(rèn)價(jià)格更新為3_14對(duì)應(yīng)的價(jià)格 data-aid為4, 規(guī)格的data-aid為13時(shí),默認(rèn)更新為4_13對(duì)應(yīng)的價(jià)格
第二種:
{ 'library':[{ 'product_color':'625', 'product_spec':'626', 'buyer':'46.15', 'attribute':'0'},{ 'product_color':'625', 'product_spec':'627', 'buyer':'46.15', 'attribute':'0'},{ 'product_color':'625', 'product_spec':'628', 'buyer':'50.00', 'attribute':'1'},{ 'product_color':'629', 'product_spec':'627', 'buyer':'33.00', 'attribute':'0'} ]}
默認(rèn)
顏色product_color: 625規(guī)格product_spec: 627價(jià)格為46.15當(dāng)選擇product_color: 625, 規(guī)格為628,對(duì)應(yīng)價(jià)格為50.00當(dāng)選擇product_color: 629, 規(guī)格為627,對(duì)應(yīng)的價(jià)格為33.00
這兩種json數(shù)據(jù)格式那種更為簡(jiǎn)潔,效率更高效?
問題解答
回答1:有數(shù)據(jù)冗余重復(fù)的時(shí)候,盡量消除數(shù)據(jù)的重復(fù)。上面的兩種數(shù)據(jù)組織方式都沒有冗余,但是為了查詢方便,數(shù)據(jù)格式的組織可以像數(shù)據(jù)庫一樣,有一個(gè)便于查詢的主鍵,也可以說是id。所以個(gè)人感覺上面的那種方式好一點(diǎn),可以直接通過key查到value。而下面的那種方式感覺查詢起來有些麻煩。
數(shù)據(jù)格式的組織也盡量范式化:
任何類型的數(shù)據(jù)在 state 中都有自己的 “表”。任何 “數(shù)據(jù)表” 應(yīng)將各個(gè)項(xiàng)目存儲(chǔ)在對(duì)象中,其中每個(gè)項(xiàng)目的 ID 作為 key,項(xiàng)目本身作為 value。任何對(duì)單個(gè)項(xiàng)目的引用都應(yīng)該根據(jù)存儲(chǔ)項(xiàng)目的 ID 來完成。ID 數(shù)組應(yīng)該用于排序。
上面的引用是來自Redux官方文檔推薦的state組織方式,可以參考一下。
