2016-11-10 104 views
0

我正在學習項目(基本上我正在構建基於Node-Express的Web站點以學習Node-Express)。 我需要製作一個'菜單',並且我正在努力尋找以JSON表示的最佳方式(然後在HTML表格中使用)。 我想到的選項是:JS最佳實踐對象vs數組列表vs值對

{"menu" : [{"coffee": 2.00}, {"juice": 3.50}, {"smoothy": 4.00}]} 

{"menu" : {"coffee": 2.00, "juice": 3.50, "smoothy": 4.00}} 

{"menu" : [{"item": "coffee", "price": 2.00}, {"item": "juice", "price": 3.50}, {"item": "smooth", "price": 4.00} ]} 

我找到了一種方法來處理上述所有,但我想知道哪一個是我的方案是最好的選擇(也可能是爲什麼別人都沒有)。

+1

首先是無效的語法。其次是有多個記錄時很難迭代。第三個更合適。 – Tushar

+0

第三種選擇是最好的,因爲您可以很容易地訪問這兩個項目以及它的價格,首先你可以傳遞一個數組中的密鑰,這樣它的無效語法和第二個可以工作。@ GiovanniVigorelli –

+0

是啊..忘記{}選項將是: {「menu」:[{「coffee」:2.00},{「juice」:3.50},{「smoothy」:4.00}]} –

回答

1

var menu = {"coffee": 2.00, "juice": 3.50, "smoothy": 4.00} 
 

 
$(function() { 
 
    //FILTER example 
 
    var filter = _.pick(menu, function(num){ return num % 2 == 0; }); 
 
    console.log(filter) 
 
})
<script src="http://underscorejs.org/underscore.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

我會選擇這樣的: -

var menu = {"coffee": 2.00, "juice": 3.50, "smoothy": 4.00} 

我有很多理由: -

  • 易於維護(簡單鍵值對)
  • 容易迭代
  • 容易根據項目名稱
  • 容易過濾檢索值(如您需要根據價格可能是簡單的過濾或可能的價格區間)
+0

我以這種方式。 – Redu

+0

如果您想要訂購它們,該怎麼辦?關於過濾,您能否提供一個按價格範圍過濾的快速示例,這樣我們都可以看到它有多容易? – 2016-11-10 10:36:16

+0

@torazaburo請檢查更新的答案 –

1

第三個是更多的語義和友好。您可以輕鬆地遍歷它們並使用item進行其他操作,如if (item == something),並且它看起來更具可讀性。