簡體   English   中英

合並JSON對象數組並使用Javascript進行排序

[英]Merge JSON Object arrays and sort with Javascript

我有一個包含12個數組的JSON對象。 不同地區的國家。 我正在嘗試將此數組合並到選擇下拉菜單中。 JSON看起來像這樣:

"latinamerica": [
        "Argentina",
        "Bolivia",
        "Brazil",
        "Chile",
        "Colombia",
        "Ecuador",
        "Paraguay",
        "Peru"
    ],
    "korea": ["South Korea"]

然后我用JSON調用:

    $.getJSON('js/countries.json', function(data) {

  var items = [];      

  items[0] = '<option value="0">Country</option>';

  $.each(data['latinamerica'], function(key, val) {
    items.push('<option value="'+ key +'">'+ val +'</option>');
  });
});

對Object中的每個數組執行此操作。 問題是我想合並所有這些數組,按字母順序對它們進行排序,但仍保持它們所關聯的區域。 所以基本上我會有一個所有國家的下拉列表,HTML看起來像:

<option value="latinamerica">Argentina</option>
<option value="europe">Austria</option>

我嘗試過連接,但后來丟失了我的數組名稱。 建議? TIA。

你基本上需要一個不同的“模型”來生成“視圖”:

var countries = [];
for (var region in data) {
  for (var i = 0, l = data[region].length; i < l; ++i) {  
    countries.push({ country: data[region][i], region: region });
  }
}

然后你對它進行排序:

countries.sort(function(a, b) {
  if (a.country < b.country) return -1;
  if (a.country > b.country) return 1;
  return 0;
});

然后你用它:

var items = [];      

items.push('<option value="0">Country</option>');
for (var i = 0, l = countries.length; i < l; ++i) {
  items.push('<option value="'+ countries[i].region +'">'+ countries[i].country +'</option>');
}

(注意:所有這些代碼都是未經測試的 )。

items.sort(function(a, b) {
  if (a.innerHTML < b.innerHTML) return -1;
  else return 1;
});

排序后添加“國家/地區”選項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM