用javascript创建二维对象或数组

时间:2020-12-06 21:37:04

I'm trying to build a language menu based on <link rel="alternate"> tags in the head of a website.

我正在尝试在网站的头部基于 标签构建语言菜单。

I have to objects, one for continents and one for languages, based on these two objects I try to generate an unordered list like this:

我必须使用对象,一个用于大陆,一个用于语言,基于这两个对象,我尝试生成一个无序列表,如下所示:

<ul>
    <li>Continent
        <ul>
            <li>Countryname - Language</li>
            ...
        </ul>
    </li>
    <li>Continent
        <ul>...</ul>
    </li>
</ul>

I've created the following functions, the problems is, it seems that the created object is overwritten. I have always only one country per continent. Could someone please give me a hint how to fix that?

我创建了以下函数,问题是,似乎创建的对象被覆盖了。我每个大陆只有一个国家。有人可以给我一个提示如何解决这个问题吗?

I need an Array or Object that i can use to build the unordered list. Something like that:

我需要一个可以用来构建无序列表的数组或对象。像这样的东西:

  • Continent 1
    • Country 1
      • name
      • lang
    • 国家1名字朗

    • Country 2
      • name
      • lang
    • 国家2名字朗

    • ...
  • 大陆1国家1名称lang国家2名称lang ...

  • Continent 2
    • Country 1
      • name
      • lang
    • 国家1名字朗

    • Country 2
      • name
      • lang
    • 国家2名字朗

  • 大陆2国家1名称lang国家2名称lang

  • ...

Here is my Code:

这是我的代码:

var continents = {
      "AF":
      {
        "name": "Africa",
        "countries":
        {
          "DZ": "Algeria",
          "AO": "Angola",
          "BJ": "Benin",
          "BW": "Botswana",
          "BF": "Burkina Faso",
          "ZW": "Zimbabwe"
        }
      },
      "AS":
      {
        "name": "Asia",
        "countries":
        {
          "AF": "Afghanistan",
          "AM": "Armenia",
          "HK": "* SAR China",
          "IN": "India",
          "ID": "Indonesia",
          "JP": "Japan",
          "KZ": "Kazakhstan",
          "TM": "Turkmenistan",
          "AE": "United Arab Emirates",
          "UZ": "Uzbekistan",
          "VN": "Vietnam",
          "YE": "Yemen"
        }
      },
      "EU":
      {
        "name": "Europe",
        "countries":
        {
          "AL": "Albania",
          "AD": "Andorra",
          "AT": "Austria",
          "BY": "Belarus",
          "BE": "Belgium",
          "BA": "Bosnia and Herzegovina",
          "BG": "Bulgaria",
          "HR": "Croatia",
          "CY": "Cyprus",
          "CZ": "Czech Republic",
          "DK": "Denmark",
          "DD": "East Germany",
          "EE": "Estonia",
          "FO": "Faroe Islands",
          "FI": "Finland",
          "FR": "France",
          "DE": "Germany",
          "GI": "Gibraltar",
          "GR": "Greece",
          "GG": "Guernsey",
          "HU": "Hungary",
          "IS": "Iceland",
          "IE": "Ireland",
          "IM": "Isle of Man",
          "IT": "Italy",
          "JE": "Jersey",
          "LV": "Latvia",
          "LI": "Liechtenstein",
          "LT": "Lithuania",
          "LU": "Luxembourg",
          "MK": "Macedonia",
          "MT": "Malta",
          "FX": "Metropolitan France",
          "MD": "Moldova",
          "MC": "Monaco",
          "ME": "Montenegro",
          "NL": "Netherlands",
          "NO": "Norway",
          "PL": "Poland",
          "PT": "Portugal",
          "RO": "Romania",
          "RU": "Russia",
          "SM": "San Marino",
          "RS": "Serbia",
          "CS": "Serbia and Montenegro",
          "SK": "Slovakia",
          "SI": "Slovenia",
          "ES": "Spain",
          "SJ": "Svalbard and Jan Mayen",
          "SE": "Sweden",
          "CH": "Switzerland",
          "UA": "Ukraine",
          "SU": "Union of Soviet Socialist Republics",
          "GB": "United Kingdom",
          "VA": "Vatican City",
          "AX": "Åland Islands"
        }
      },
      "AU":
      {
        "name": "Australia",
        "countries":
        {
          "AS": "American Samoa",
          "AQ": "Antarctica",
          "AU": "Australia",
          "BV": "Bouvet Island",
          "UM": "U.S. Minor Outlying Islands",
          "VU": "Vanuatu",
          "WF": "Wallis and Futuna"
        }
      },
      "AM":
      {
        "name": "America",
        "countries":
        {
          "AI": "Anguilla",
          "AG": "Antigua and Barbuda",
          "AR": "Argentina",
          "AW": "Aruba",
          "BS": "Bahamas",
          "BB": "Barbados",
          "BZ": "Belize",
          "BM": "Bermuda",
          "VI": "U.S. Virgin Islands",
          "US": "United States",
          "UY": "Uruguay",
          "VE": "Venezuela"
        }
      },
      "ME":
      {
        "name": "Middle East",
        "countries":
        {
          "IR": "Iran",
          "IQ": "Iraq",
          "IL": "Israel",
          "JO": "Jordan",
          "KW": "Kuwait",
          "OM": "Oman",
          "QA": "Qatar",
          "SA": "Saudi Arabia",
          "SY": "Syria",
          "TR": "Turkey"
        }
      }
    }
    
    
        languages = {
      "ab":{
          "name":"Abkhaz",
          "nativeName":"аҧсуа"
      },
      "aa":{
          "name":"Afar",
          "nativeName":"Afaraf"
      },
      "af":{
          "name":"Afrikaans",
          "nativeName":"Afrikaans"
      },
      "ak":{
          "name":"Akan",
          "nativeName":"Akan"
      },
      "sq":{
          "name":"Albanian",
          "nativeName":"Shqip"
      },
      "am":{
          "name":"Amharic",
          "nativeName":"አማርኛ"
      },
      "ar":{
          "name":"Arabic",
          "nativeName":"العربية"
      },
      "an":{
          "name":"Aragonese",
          "nativeName":"Aragonés"
      },
      "hy":{
          "name":"Armenian",
          "nativeName":"Հայերեն"
      },
      "as":{
          "name":"Assamese",
          "nativeName":"অসমীয়া"
      },
      "av":{
          "name":"Avaric",
          "nativeName":"авар мацӀ, магӀарул мацӀ"
      },
      "ae":{
          "name":"Avestan",
          "nativeName":"avesta"
      },
      "ay":{
          "name":"Aymara",
          "nativeName":"aymar aru"
      },
      "az":{
          "name":"Azerbaijani",
          "nativeName":"azərbaycan dili"
      },
      "bm":{
          "name":"Bambara",
          "nativeName":"bamanankan"
      },
      "ba":{
          "name":"Bashkir",
          "nativeName":"башҡорт теле"
      },
      "eu":{
          "name":"Basque",
          "nativeName":"euskara, euskera"
      },
      "be":{
          "name":"Belarusian",
          "nativeName":"Беларуская"
      },
      "bn":{
          "name":"Bengali",
          "nativeName":"বাংলা"
      },
      "bh":{
          "name":"Bihari",
          "nativeName":"भोजपुरी"
      },
      "bi":{
          "name":"Bislama",
          "nativeName":"Bislama"
      },
      "bs":{
          "name":"Bosnian",
          "nativeName":"bosanski jezik"
      },
      "br":{
          "name":"Breton",
          "nativeName":"brezhoneg"
      },
      "bg":{
          "name":"Bulgarian",
          "nativeName":"български език"
      },
      "my":{
          "name":"Burmese",
          "nativeName":"ဗမာစာ"
      },
      "ca":{
          "name":"Catalan; Valencian",
          "nativeName":"Català"
      },
      "ch":{
          "name":"Chamorro",
          "nativeName":"Chamoru"
      },
      "ce":{
          "name":"Chechen",
          "nativeName":"нохчийн мотт"
      },
      "ny":{
          "name":"Chichewa; Chewa; Nyanja",
          "nativeName":"chiCheŵa, chinyanja"
      },
      "zh":{
          "name":"Chinese",
          "nativeName":"中文 (Zhōngwén), 汉语, 漢語"
      },
      "cv":{
          "name":"Chuvash",
          "nativeName":"чӑваш чӗлхи"
      },
      "kw":{
          "name":"Cornish",
          "nativeName":"Kernewek"
      },
      "co":{
          "name":"Corsican",
          "nativeName":"corsu, lingua corsa"
      },
      "cr":{
          "name":"Cree",
          "nativeName":"ᓀᐦᐃᔭᐍᐏᐣ"
      },
      "hr":{
          "name":"Croatian",
          "nativeName":"hrvatski"
      },
      "cs":{
          "name":"Czech",
          "nativeName":"česky, čeština"
      },
      "da":{
          "name":"Danish",
          "nativeName":"dansk"
      },
      "dv":{
          "name":"Divehi; Dhivehi; Maldivian;",
          "nativeName":"ދިވެހި"
      },
      "nl":{
          "name":"Dutch",
          "nativeName":"Nederlands, Vlaams"
      },
      "en":{
          "name":"English",
          "nativeName":"English"
      },
      "eo":{
          "name":"Esperanto",
          "nativeName":"Esperanto"
      },
      "et":{
          "name":"Estonian",
          "nativeName":"eesti, eesti keel"
      },
      "ee":{
          "name":"Ewe",
          "nativeName":"Eʋegbe"
      },
      "fo":{
          "name":"Faroese",
          "nativeName":"føroyskt"
      },
      "fj":{
          "name":"Fijian",
          "nativeName":"vosa Vakaviti"
      },
      "fi":{
          "name":"Finnish",
          "nativeName":"suomi, suomen kieli"
      },
      "fr":{
          "name":"French",
          "nativeName":"français, langue française"
      },
      "ff":{
          "name":"Fula; Fulah; Pulaar; Pular",
          "nativeName":"Fulfulde, Pulaar, Pular"
      },
      "gl":{
          "name":"Galician",
          "nativeName":"Galego"
      },
      "ka":{
          "name":"Georgian",
          "nativeName":"ქართული"
      },
      "de":{
          "name":"German",
          "nativeName":"Deutsch"
      },
      "el":{
          "name":"Greek, Modern",
          "nativeName":"Ελληνικά"
      },
      "gn":{
          "name":"Guaraní",
          "nativeName":"Avañeẽ"
      },
      "gu":{
          "name":"Gujarati",
          "nativeName":"ગુજરાતી"
      },
      "ht":{
          "name":"Haitian; Haitian Creole",
          "nativeName":"Kreyòl ayisyen"
      },
      "ha":{
          "name":"Hausa",
          "nativeName":"Hausa, هَوُسَ"
      },
      "he":{
          "name":"Hebrew (modern)",
          "nativeName":"עברית"
      },
      "hz":{
          "name":"Herero",
          "nativeName":"Otjiherero"
      },
      "hi":{
          "name":"Hindi",
          "nativeName":"हिन्दी, हिंदी"
      },
      "ho":{
          "name":"Hiri Motu",
          "nativeName":"Hiri Motu"
      },
      "hu":{
          "name":"Hungarian",
          "nativeName":"Magyar"
      },
      "ia":{
          "name":"Interlingua",
          "nativeName":"Interlingua"
      },
      "id":{
          "name":"Indonesian",
          "nativeName":"Bahasa Indonesia"
      },
      "ie":{
          "name":"Interlingue",
          "nativeName":"Originally called Occidental; then Interlingue after WWII"
      },
      "ga":{
          "name":"Irish",
          "nativeName":"Gaeilge"
      },
      "ig":{
          "name":"Igbo",
          "nativeName":"Asụsụ Igbo"
      },
      "ik":{
          "name":"Inupiaq",
          "nativeName":"Iñupiaq, Iñupiatun"
      },
      "io":{
          "name":"Ido",
          "nativeName":"Ido"
      },
      "is":{
          "name":"Icelandic",
          "nativeName":"Íslenska"
      },
      "it":{
          "name":"Italian",
          "nativeName":"Italiano"
      },
      "iu":{
          "name":"Inuktitut",
          "nativeName":"ᐃᓄᒃᑎᑐᑦ"
      },
      "ja":{
          "name":"Japanese",
          "nativeName":"日本語 (にほんご/にっぽんご)"
      },
      "jv":{
          "name":"Javanese",
          "nativeName":"basa Jawa"
      },
      "kl":{
          "name":"Kalaallisut, Greenlandic",
          "nativeName":"kalaallisut, kalaallit oqaasii"
      },
      "kn":{
          "name":"Kannada",
          "nativeName":"ಕನ್ನಡ"
      },
      "kr":{
          "name":"Kanuri",
          "nativeName":"Kanuri"
      },
      "ks":{
          "name":"Kashmiri",
          "nativeName":"कश्मीरी, كشميري‎"
      },
      "kk":{
          "name":"Kazakh",
          "nativeName":"Қазақ тілі"
      },
      "km":{
          "name":"Khmer",
          "nativeName":"ភាសាខ្មែរ"
      },
      "ki":{
          "name":"Kikuyu, Gikuyu",
          "nativeName":"Gĩkũyũ"
      },
      "rw":{
          "name":"Kinyarwanda",
          "nativeName":"Ikinyarwanda"
      },
      "ky":{
          "name":"Kirghiz, Kyrgyz",
          "nativeName":"кыргыз тили"
      },
      "kv":{
          "name":"Komi",
          "nativeName":"коми кыв"
      },
      "kg":{
          "name":"Kongo",
          "nativeName":"KiKongo"
      },
      "ko":{
          "name":"Korean",
          "nativeName":"한국어 (韓國語), 조선말 (朝鮮語)"
      },
      "ku":{
          "name":"Kurdish",
          "nativeName":"Kurdî, كوردی‎"
      },
      "kj":{
          "name":"Kwanyama, Kuanyama",
          "nativeName":"Kuanyama"
      },
      "la":{
          "name":"Latin",
          "nativeName":"latine, lingua latina"
      },
      "lb":{
          "name":"Luxembourgish, Letzeburgesch",
          "nativeName":"Lëtzebuergesch"
      },
      "lg":{
          "name":"Luganda",
          "nativeName":"Luganda"
      },
      "li":{
          "name":"Limburgish, Limburgan, Limburger",
          "nativeName":"Limburgs"
      },
      "ln":{
          "name":"Lingala",
          "nativeName":"Lingála"
      },
      "lo":{
          "name":"Lao",
          "nativeName":"ພາສາລາວ"
      },
      "lt":{
          "name":"Lithuanian",
          "nativeName":"lietuvių kalba"
      },
      "lu":{
          "name":"Luba-Katanga",
          "nativeName":""
      },
      "lv":{
          "name":"Latvian",
          "nativeName":"latviešu valoda"
      },
      "gv":{
          "name":"Manx",
          "nativeName":"Gaelg, Gailck"
      },
      "mk":{
          "name":"Macedonian",
          "nativeName":"македонски јазик"
      },
      "mg":{
          "name":"Malagasy",
          "nativeName":"Malagasy fiteny"
      },
      "ms":{
          "name":"Malay",
          "nativeName":"bahasa Melayu, بهاس ملايو‎"
      },
      "ml":{
          "name":"Malayalam",
          "nativeName":"മലയാളം"
      },
      "mt":{
          "name":"Maltese",
          "nativeName":"Malti"
      },
      "mi":{
          "name":"Māori",
          "nativeName":"te reo Māori"
      },
      "mr":{
          "name":"Marathi (Marāṭhī)",
          "nativeName":"मराठी"
      },
      "mh":{
          "name":"Marshallese",
          "nativeName":"Kajin M̧ajeļ"
      },
      "mn":{
          "name":"*n",
          "nativeName":"монгол"
      },
      "na":{
          "name":"Nauru",
          "nativeName":"Ekakairũ Naoero"
      },
      "nv":{
          "name":"Navajo, Navaho",
          "nativeName":"Diné bizaad, Dinékʼehǰí"
      },
      "nb":{
          "name":"Norwegian Bokmål",
          "nativeName":"Norsk bokmål"
      },
      "nd":{
          "name":"North Ndebele",
          "nativeName":"isiNdebele"
      },
      "ne":{
          "name":"Nepali",
          "nativeName":"नेपाली"
      },
      "ng":{
          "name":"Ndonga",
          "nativeName":"Owambo"
      },
      "nn":{
          "name":"Norwegian Nynorsk",
          "nativeName":"Norsk nynorsk"
      },
      "no":{
          "name":"Norwegian",
          "nativeName":"Norsk"
      },
      "ii":{
          "name":"Nuosu",
          "nativeName":"ꆈꌠ꒿ Nuosuhxop"
      },
      "nr":{
          "name":"South Ndebele",
          "nativeName":"isiNdebele"
      },
      "oc":{
          "name":"Occitan",
          "nativeName":"Occitan"
      },
      "oj":{
          "name":"Ojibwe, Ojibwa",
          "nativeName":"ᐊᓂᔑᓈᐯᒧᐎᓐ"
      },
      "cu":{
          "name":"Old Church Slavonic, Church Slavic, Church Slavonic, Old Bulgarian, Old Slavonic",
          "nativeName":"ѩзыкъ словѣньскъ"
      },
      "om":{
          "name":"Oromo",
          "nativeName":"Afaan Oromoo"
      },
      "or":{
          "name":"Oriya",
          "nativeName":"ଓଡ଼ିଆ"
      },
      "os":{
          "name":"Ossetian, Ossetic",
          "nativeName":"ирон æвзаг"
      },
      "pa":{
          "name":"Panjabi, Punjabi",
          "nativeName":"ਪੰਜਾਬੀ, پنجابی‎"
      },
      "pi":{
          "name":"Pāli",
          "nativeName":"पाऴि"
      },
      "fa":{
          "name":"Persian",
          "nativeName":"فارسی"
      },
      "pl":{
          "name":"Polish",
          "nativeName":"polski"
      },
      "ps":{
          "name":"Pashto, Pushto",
          "nativeName":"پښتو"
      },
      "pt":{
          "name":"Portuguese",
          "nativeName":"Português"
      },
      "qu":{
          "name":"Quechua",
          "nativeName":"Runa Simi, Kichwa"
      },
      "rm":{
          "name":"Romansh",
          "nativeName":"rumantsch grischun"
      },
      "rn":{
          "name":"Kirundi",
          "nativeName":"kiRundi"
      },
      "ro":{
          "name":"Romanian, Moldavian, Moldovan",
          "nativeName":"română"
      },
      "ru":{
          "name":"Russian",
          "nativeName":"русский язык"
      },
      "sa":{
          "name":"Sanskrit (Saṁskṛta)",
          "nativeName":"संस्कृतम्"
      },
      "sc":{
          "name":"Sardinian",
          "nativeName":"sardu"
      },
      "sd":{
          "name":"Sindhi",
          "nativeName":"सिन्धी, سنڌي، سندھی‎"
      },
      "se":{
          "name":"Northern Sami",
          "nativeName":"Davvisámegiella"
      },
      "sm":{
          "name":"Samoan",
          "nativeName":"gagana faa Samoa"
      },
      "sg":{
          "name":"Sango",
          "nativeName":"yângâ tî sängö"
      },
      "sr":{
          "name":"Serbian",
          "nativeName":"српски језик"
      }
    }
        
    function getContinent(code){
      for(continent in continents){
        if(continents[continent].countries[code]){
          return continents[continent].name;
        }
      }
    }

    function getCountry(code){
      for(continent in continents){
        if(continents[continent].countries[code]){
          return continents[continent].countries[code];
        }
      }
    }

    function getLanguage(code){

      return languages[code].name;

    }

   function createLangArray(){


    $('link[rel="alternate"]').each(function() {

      var arr = $(this).attr('hrefLang').split('-');

      var continent = getContinent(arr[1].toUpperCase());
      var country = getCountry(arr[1].toUpperCase());
      var language = getLanguage(arr[0]);

      if (lang[continent] == undefined) {
        lang[continent] = {};
      }

      if (lang[continent][country] == undefined) {
        lang[continent][country] = {};
      }


      lang[continent][country] = {country: country, language: language};

    });

     console.log(lang);

   }
<link rel="alternate" href="/de-ch/index.html" hreflang="de-ch" type="text/html">
<link rel="alternate" href="/en-gb/index.html" hreflang="en-gb" type="text/html">
<link rel="alternate" href="/en-hk/index.html" hreflang="en-hk" type="text/html">
<link rel="alternate" href="/fr-ch/index.html" hreflang="fr-ch" type="text/html">
<link rel="alternate" href="/it-ch/index.html" hreflang="it-ch" type="text/html">
<link rel="alternate" href="/zh-hk/index.html" hreflang="zh-hk" type="text/html">

2 个解决方案

#1


2  

I think i finally understand what you want. You can change only this part of your code:

我想我终于明白了你想要的东西。您只能更改代码的这一部分:

if (lang[continent][country] == undefined) {
    lang[continent][country] = {};
}

lang[continent][country] = {country: country, language: language};

To this (define countries as Array):

为此(将国家定义为数组):

if (lang[continent].countries == undefined) {
    lang[continent].countries = [];
}

lang[continent].countries.push({country: country, language: language});

See this JSFiddle.

看到这个JSFiddle。

#2


0  

how about this?

这个怎么样?

    var continents = {
        "AF": {
            "name": "Africa",
            "countries": {
                "DZ": "Algeria",
                "AO": "Angola",
                "BJ": "Benin",
                "BW": "Botswana",
                "BF": "Burkina Faso",
                "ZW": "Zimbabwe"
            }
        },
        "AS": {
            "name": "Asia",
            "countries": {
                "AF": "Afghanistan",
                "AM": "Armenia",
                "HK": "* SAR China",
                "IN": "India",
                "ID": "Indonesia",
                "JP": "Japan",
                "KZ": "Kazakhstan",
                "TM": "Turkmenistan",
                "AE": "United Arab Emirates",
                "UZ": "Uzbekistan",
                "VN": "Vietnam",
                "YE": "Yemen"
            }
        },
        "EU": {
            "name": "Europe",
            "countries": {
                "AL": "Albania",
                "AD": "Andorra",
                "AT": "Austria",
                "BY": "Belarus",
                "BE": "Belgium",
                "BA": "Bosnia and Herzegovina",
                "BG": "Bulgaria",
                "HR": "Croatia",
                "CY": "Cyprus",
                "CZ": "Czech Republic",
                "DK": "Denmark",
                "DD": "East Germany",
                "EE": "Estonia",
                "FO": "Faroe Islands",
                "FI": "Finland",
                "FR": "France",
                "DE": "Germany",
                "GI": "Gibraltar",
                "GR": "Greece",
                "GG": "Guernsey",
                "HU": "Hungary",
                "IS": "Iceland",
                "IE": "Ireland",
                "IM": "Isle of Man",
                "IT": "Italy",
                "JE": "Jersey",
                "LV": "Latvia",
                "LI": "Liechtenstein",
                "LT": "Lithuania",
                "LU": "Luxembourg",
                "MK": "Macedonia",
                "MT": "Malta",
                "FX": "Metropolitan France",
                "MD": "Moldova",
                "MC": "Monaco",
                "ME": "Montenegro",
                "NL": "Netherlands",
                "NO": "Norway",
                "PL": "Poland",
                "PT": "Portugal",
                "RO": "Romania",
                "RU": "Russia",
                "SM": "San Marino",
                "RS": "Serbia",
                "CS": "Serbia and Montenegro",
                "SK": "Slovakia",
                "SI": "Slovenia",
                "ES": "Spain",
                "SJ": "Svalbard and Jan Mayen",
                "SE": "Sweden",
                "CH": "Switzerland",
                "UA": "Ukraine",
                "SU": "Union of Soviet Socialist Republics",
                "GB": "United Kingdom",
                "VA": "Vatican City",
                "AX": "Åland Islands"
            }
        },
        "AU": {
            "name": "Australia",
            "countries": {
                "AS": "American Samoa",
                "AQ": "Antarctica",
                "AU": "Australia",
                "BV": "Bouvet Island",
                "UM": "U.S. Minor Outlying Islands",
                "VU": "Vanuatu",
                "WF": "Wallis and Futuna"
            }
        },
        "AM": {
            "name": "America",
            "countries": {
                "AI": "Anguilla",
                "AG": "Antigua and Barbuda",
                "AR": "Argentina",
                "AW": "Aruba",
                "BS": "Bahamas",
                "BB": "Barbados",
                "BZ": "Belize",
                "BM": "Bermuda",
                "VI": "U.S. Virgin Islands",
                "US": "United States",
                "UY": "Uruguay",
                "VE": "Venezuela"
            }
        },
        "ME": {
            "name": "Middle East",
            "countries": {
                "IR": "Iran",
                "IQ": "Iraq",
                "IL": "Israel",
                "JO": "Jordan",
                "KW": "Kuwait",
                "OM": "Oman",
                "QA": "Qatar",
                "SA": "Saudi Arabia",
                "SY": "Syria",
                "TR": "Turkey"
            }
        }
    }
    var languages = {
        "ab": {
            "name": "Abkhaz",
            "nativeName": "аҧсуа"
        },
        "aa": {
            "name": "Afar",
            "nativeName": "Afaraf"
        },
        "af": {
            "name": "Afrikaans",
            "nativeName": "Afrikaans"
        },
        "ak": {
            "name": "Akan",
            "nativeName": "Akan"
        },
        "sq": {
            "name": "Albanian",
            "nativeName": "Shqip"
        },
        "am": {
            "name": "Amharic",
            "nativeName": "አማርኛ"
        },
        "ar": {
            "name": "Arabic",
            "nativeName": "العربية"
        },
        "an": {
            "name": "Aragonese",
            "nativeName": "Aragonés"
        },
        "hy": {
            "name": "Armenian",
            "nativeName": "Հայերեն"
        },
        "as": {
            "name": "Assamese",
            "nativeName": "অসমীয়া"
        },
        "av": {
            "name": "Avaric",
            "nativeName": "авар мацӀ, магӀарул мацӀ"
        },
        "ae": {
            "name": "Avestan",
            "nativeName": "avesta"
        },
        "ay": {
            "name": "Aymara",
            "nativeName": "aymar aru"
        },
        "az": {
            "name": "Azerbaijani",
            "nativeName": "azərbaycan dili"
        },
        "bm": {
            "name": "Bambara",
            "nativeName": "bamanankan"
        },
        "ba": {
            "name": "Bashkir",
            "nativeName": "башҡорт теле"
        },
        "eu": {
            "name": "Basque",
            "nativeName": "euskara, euskera"
        },
        "be": {
            "name": "Belarusian",
            "nativeName": "Беларуская"
        },
        "bn": {
            "name": "Bengali",
            "nativeName": "বাংলা"
        },
        "bh": {
            "name": "Bihari",
            "nativeName": "भोजपुरी"
        },
        "bi": {
            "name": "Bislama",
            "nativeName": "Bislama"
        },
        "bs": {
            "name": "Bosnian",
            "nativeName": "bosanski jezik"
        },
        "br": {
            "name": "Breton",
            "nativeName": "brezhoneg"
        },
        "bg": {
            "name": "Bulgarian",
            "nativeName": "български език"
        },
        "my": {
            "name": "Burmese",
            "nativeName": "ဗမာစာ"
        },
        "ca": {
            "name": "Catalan; Valencian",
            "nativeName": "Català"
        },
        "ch": {
            "name": "Chamorro",
            "nativeName": "Chamoru"
        },
        "ce": {
            "name": "Chechen",
            "nativeName": "нохчийн мотт"
        },
        "ny": {
            "name": "Chichewa; Chewa; Nyanja",
            "nativeName": "chiCheŵa, chinyanja"
        },
        "zh": {
            "name": "Chinese",
            "nativeName": "中文 (Zhōngwén), 汉语, 漢語"
        },
        "cv": {
            "name": "Chuvash",
            "nativeName": "чӑваш чӗлхи"
        },
        "kw": {
            "name": "Cornish",
            "nativeName": "Kernewek"
        },
        "co": {
            "name": "Corsican",
            "nativeName": "corsu, lingua corsa"
        },
        "cr": {
            "name": "Cree",
            "nativeName": "ᓀᐦᐃᔭᐍᐏᐣ"
        },
        "hr": {
            "name": "Croatian",
            "nativeName": "hrvatski"
        },
        "cs": {
            "name": "Czech",
            "nativeName": "česky, čeština"
        },
        "da": {
            "name": "Danish",
            "nativeName": "dansk"
        },
        "dv": {
            "name": "Divehi; Dhivehi; Maldivian;",
            "nativeName": "ދިވެހި"
        },
        "nl": {
            "name": "Dutch",
            "nativeName": "Nederlands, Vlaams"
        },
        "en": {
            "name": "English",
            "nativeName": "English"
        },
        "eo": {
            "name": "Esperanto",
            "nativeName": "Esperanto"
        },
        "et": {
            "name": "Estonian",
            "nativeName": "eesti, eesti keel"
        },
        "ee": {
            "name": "Ewe",
            "nativeName": "Eʋegbe"
        },
        "fo": {
            "name": "Faroese",
            "nativeName": "føroyskt"
        },
        "fj": {
            "name": "Fijian",
            "nativeName": "vosa Vakaviti"
        },
        "fi": {
            "name": "Finnish",
            "nativeName": "suomi, suomen kieli"
        },
        "fr": {
            "name": "French",
            "nativeName": "français, langue française"
        },
        "ff": {
            "name": "Fula; Fulah; Pulaar; Pular",
            "nativeName": "Fulfulde, Pulaar, Pular"
        },
        "gl": {
            "name": "Galician",
            "nativeName": "Galego"
        },
        "ka": {
            "name": "Georgian",
            "nativeName": "ქართული"
        },
        "de": {
            "name": "German",
            "nativeName": "Deutsch"
        },
        "el": {
            "name": "Greek, Modern",
            "nativeName": "Ελληνικά"
        },
        "gn": {
            "name": "Guaraní",
            "nativeName": "Avañeẽ"
        },
        "gu": {
            "name": "Gujarati",
            "nativeName": "ગુજરાતી"
        },
        "ht": {
            "name": "Haitian; Haitian Creole",
            "nativeName": "Kreyòl ayisyen"
        },
        "ha": {
            "name": "Hausa",
            "nativeName": "Hausa, هَوُسَ"
        },
        "he": {
            "name": "Hebrew (modern)",
            "nativeName": "עברית"
        },
        "hz": {
            "name": "Herero",
            "nativeName": "Otjiherero"
        },
        "hi": {
            "name": "Hindi",
            "nativeName": "हिन्दी, हिंदी"
        },
        "ho": {
            "name": "Hiri Motu",
            "nativeName": "Hiri Motu"
        },
        "hu": {
            "name": "Hungarian",
            "nativeName": "Magyar"
        },
        "ia": {
            "name": "Interlingua",
            "nativeName": "Interlingua"
        },
        "id": {
            "name": "Indonesian",
            "nativeName": "Bahasa Indonesia"
        },
        "ie": {
            "name": "Interlingue",
            "nativeName": "Originally called Occidental; then Interlingue after WWII"
        },
        "ga": {
            "name": "Irish",
            "nativeName": "Gaeilge"
        },
        "ig": {
            "name": "Igbo",
            "nativeName": "Asụsụ Igbo"
        },
        "ik": {
            "name": "Inupiaq",
            "nativeName": "Iñupiaq, Iñupiatun"
        },
        "io": {
            "name": "Ido",
            "nativeName": "Ido"
        },
        "is": {
            "name": "Icelandic",
            "nativeName": "Íslenska"
        },
        "it": {
            "name": "Italian",
            "nativeName": "Italiano"
        },
        "iu": {
            "name": "Inuktitut",
            "nativeName": "ᐃᓄᒃᑎᑐᑦ"
        },
        "ja": {
            "name": "Japanese",
            "nativeName": "日本語 (にほんご/にっぽんご)"
        },
        "jv": {
            "name": "Javanese",
            "nativeName": "basa Jawa"
        },
        "kl": {
            "name": "Kalaallisut, Greenlandic",
            "nativeName": "kalaallisut, kalaallit oqaasii"
        },
        "kn": {
            "name": "Kannada",
            "nativeName": "ಕನ್ನಡ"
        },
        "kr": {
            "name": "Kanuri",
            "nativeName": "Kanuri"
        },
        "ks": {
            "name": "Kashmiri",
            "nativeName": "कश्मीरी, كشميري‎"
        },
        "kk": {
            "name": "Kazakh",
            "nativeName": "Қазақ тілі"
        },
        "km": {
            "name": "Khmer",
            "nativeName": "ភាសាខ្មែរ"
        },
        "ki": {
            "name": "Kikuyu, Gikuyu",
            "nativeName": "Gĩkũyũ"
        },
        "rw": {
            "name": "Kinyarwanda",
            "nativeName": "Ikinyarwanda"
        },
        "ky": {
            "name": "Kirghiz, Kyrgyz",
            "nativeName": "кыргыз тили"
        },
        "kv": {
            "name": "Komi",
            "nativeName": "коми кыв"
        },
        "kg": {
            "name": "Kongo",
            "nativeName": "KiKongo"
        },
        "ko": {
            "name": "Korean",
            "nativeName": "한국어 (韓國語), 조선말 (朝鮮語)"
        },
        "ku": {
            "name": "Kurdish",
            "nativeName": "Kurdî, كوردی‎"
        },
        "kj": {
            "name": "Kwanyama, Kuanyama",
            "nativeName": "Kuanyama"
        },
        "la": {
            "name": "Latin",
            "nativeName": "latine, lingua latina"
        },
        "lb": {
            "name": "Luxembourgish, Letzeburgesch",
            "nativeName": "Lëtzebuergesch"
        },
        "lg": {
            "name": "Luganda",
            "nativeName": "Luganda"
        },
        "li": {
            "name": "Limburgish, Limburgan, Limburger",
            "nativeName": "Limburgs"
        },
        "ln": {
            "name": "Lingala",
            "nativeName": "Lingála"
        },
        "lo": {
            "name": "Lao",
            "nativeName": "ພາສາລາວ"
        },
        "lt": {
            "name": "Lithuanian",
            "nativeName": "lietuvių kalba"
        },
        "lu": {
            "name": "Luba-Katanga",
            "nativeName": ""
        },
        "lv": {
            "name": "Latvian",
            "nativeName": "latviešu valoda"
        },
        "gv": {
            "name": "Manx",
            "nativeName": "Gaelg, Gailck"
        },
        "mk": {
            "name": "Macedonian",
            "nativeName": "македонски јазик"
        },
        "mg": {
            "name": "Malagasy",
            "nativeName": "Malagasy fiteny"
        },
        "ms": {
            "name": "Malay",
            "nativeName": "bahasa Melayu, بهاس ملايو‎"
        },
        "ml": {
            "name": "Malayalam",
            "nativeName": "മലയാളം"
        },
        "mt": {
            "name": "Maltese",
            "nativeName": "Malti"
        },
        "mi": {
            "name": "Māori",
            "nativeName": "te reo Māori"
        },
        "mr": {
            "name": "Marathi (Marāṭhī)",
            "nativeName": "मराठी"
        },
        "mh": {
            "name": "Marshallese",
            "nativeName": "Kajin M̧ajeļ"
        },
        "mn": {
            "name": "*n",
            "nativeName": "монгол"
        },
        "na": {
            "name": "Nauru",
            "nativeName": "Ekakairũ Naoero"
        },
        "nv": {
            "name": "Navajo, Navaho",
            "nativeName": "Diné bizaad, Dinékʼehǰí"
        },
        "nb": {
            "name": "Norwegian Bokmål",
            "nativeName": "Norsk bokmål"
        },
        "nd": {
            "name": "North Ndebele",
            "nativeName": "isiNdebele"
        },
        "ne": {
            "name": "Nepali",
            "nativeName": "नेपाली"
        },
        "ng": {
            "name": "Ndonga",
            "nativeName": "Owambo"
        },
        "nn": {
            "name": "Norwegian Nynorsk",
            "nativeName": "Norsk nynorsk"
        },
        "no": {
            "name": "Norwegian",
            "nativeName": "Norsk"
        },
        "ii": {
            "name": "Nuosu",
            "nativeName": "ꆈꌠ꒿ Nuosuhxop"
        },
        "nr": {
            "name": "South Ndebele",
            "nativeName": "isiNdebele"
        },
        "oc": {
            "name": "Occitan",
            "nativeName": "Occitan"
        },
        "oj": {
            "name": "Ojibwe, Ojibwa",
            "nativeName": "ᐊᓂᔑᓈᐯᒧᐎᓐ"
        },
        "cu": {
            "name": "Old Church Slavonic, Church Slavic, Church Slavonic, Old Bulgarian, Old Slavonic",
            "nativeName": "ѩзыкъ словѣньскъ"
        },
        "om": {
            "name": "Oromo",
            "nativeName": "Afaan Oromoo"
        },
        "or": {
            "name": "Oriya",
            "nativeName": "ଓଡ଼ିଆ"
        },
        "os": {
            "name": "Ossetian, Ossetic",
            "nativeName": "ирон æвзаг"
        },
        "pa": {
            "name": "Panjabi, Punjabi",
            "nativeName": "ਪੰਜਾਬੀ, پنجابی‎"
        },
        "pi": {
            "name": "Pāli",
            "nativeName": "पाऴि"
        },
        "fa": {
            "name": "Persian",
            "nativeName": "فارسی"
        },
        "pl": {
            "name": "Polish",
            "nativeName": "polski"
        },
        "ps": {
            "name": "Pashto, Pushto",
            "nativeName": "پښتو"
        },
        "pt": {
            "name": "Portuguese",
            "nativeName": "Português"
        },
        "qu": {
            "name": "Quechua",
            "nativeName": "Runa Simi, Kichwa"
        },
        "rm": {
            "name": "Romansh",
            "nativeName": "rumantsch grischun"
        },
        "rn": {
            "name": "Kirundi",
            "nativeName": "kiRundi"
        },
        "ro": {
            "name": "Romanian, Moldavian, Moldovan",
            "nativeName": "română"
        },
        "ru": {
            "name": "Russian",
            "nativeName": "русский язык"
        },
        "sa": {
            "name": "Sanskrit (Saṁskṛta)",
            "nativeName": "संस्कृतम्"
        },
        "sc": {
            "name": "Sardinian",
            "nativeName": "sardu"
        },
        "sd": {
            "name": "Sindhi",
            "nativeName": "सिन्धी, سنڌي، سندھی‎"
        },
        "se": {
            "name": "Northern Sami",
            "nativeName": "Davvisámegiella"
        },
        "sm": {
            "name": "Samoan",
            "nativeName": "gagana faa Samoa"
        },
        "sg": {
            "name": "Sango",
            "nativeName": "yângâ tî sängö"
        },
        "sr": {
            "name": "Serbian",
            "nativeName": "српски језик"
        }
    }

    function getContinent(code) {
        for (continent in continents) {
            if (continents[continent].countries[code]) {
                return continents[continent];
            }
        }
    }

    function createLangArray() {
        var lang = {};

        $('link[rel="alternate"]').each(function () {
            var arr = $(this).attr('hrefLang').split('-'), CD1 = arr[1].toUpperCase(), CD2 = arr[0];

            var continent = getContinent(CD1);
            var language = languages[CD2].name;

            // console.log(arr, CD1, continent);
            if (typeof lang[continent.name] == "undefined") {
                lang[continent.name] = {country:[]};
            }

            var country = [];
            for(var k in continent.countries){
                if(k == CD1){
                    country.push({name:continent.countries[k], lang:language});
                }
            }

            lang[continent.name].country = lang[continent.name].country.concat(country);
        });

        console.log(lang);
    }

    createLangArray();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<link rel="alternate" href="/de-ch/index.html" hreflang="de-ch" type="text/html">
<link rel="alternate" href="/en-gb/index.html" hreflang="en-gb" type="text/html">
<link rel="alternate" href="/en-hk/index.html" hreflang="en-hk" type="text/html">
<link rel="alternate" href="/fr-ch/index.html" hreflang="fr-ch" type="text/html">
<link rel="alternate" href="/it-ch/index.html" hreflang="it-ch" type="text/html">
<link rel="alternate" href="/zh-hk/index.html" hreflang="zh-hk" type="text/html">

Result

{
    "Europe":{
        "country":[
            {
                "name":"Switzerland",
                "lang":"German"
            },
            {
                "name":"United Kingdom",
                "lang":"English"
            },
            {
                "name":"Switzerland",
                "lang":"French"
            },
            {
                "name":"Switzerland",
                "lang":"Italian"
            }]
    },
    "Asia":{
        "country":[
            {
                "name":"* SAR China",
                "lang":"English"
            },
            {
                "name":"* SAR China",
                "lang":"Chinese"
            }]
    }
}

#1


2  

I think i finally understand what you want. You can change only this part of your code:

我想我终于明白了你想要的东西。您只能更改代码的这一部分:

if (lang[continent][country] == undefined) {
    lang[continent][country] = {};
}

lang[continent][country] = {country: country, language: language};

To this (define countries as Array):

为此(将国家定义为数组):

if (lang[continent].countries == undefined) {
    lang[continent].countries = [];
}

lang[continent].countries.push({country: country, language: language});

See this JSFiddle.

看到这个JSFiddle。

#2


0  

how about this?

这个怎么样?

    var continents = {
        "AF": {
            "name": "Africa",
            "countries": {
                "DZ": "Algeria",
                "AO": "Angola",
                "BJ": "Benin",
                "BW": "Botswana",
                "BF": "Burkina Faso",
                "ZW": "Zimbabwe"
            }
        },
        "AS": {
            "name": "Asia",
            "countries": {
                "AF": "Afghanistan",
                "AM": "Armenia",
                "HK": "* SAR China",
                "IN": "India",
                "ID": "Indonesia",
                "JP": "Japan",
                "KZ": "Kazakhstan",
                "TM": "Turkmenistan",
                "AE": "United Arab Emirates",
                "UZ": "Uzbekistan",
                "VN": "Vietnam",
                "YE": "Yemen"
            }
        },
        "EU": {
            "name": "Europe",
            "countries": {
                "AL": "Albania",
                "AD": "Andorra",
                "AT": "Austria",
                "BY": "Belarus",
                "BE": "Belgium",
                "BA": "Bosnia and Herzegovina",
                "BG": "Bulgaria",
                "HR": "Croatia",
                "CY": "Cyprus",
                "CZ": "Czech Republic",
                "DK": "Denmark",
                "DD": "East Germany",
                "EE": "Estonia",
                "FO": "Faroe Islands",
                "FI": "Finland",
                "FR": "France",
                "DE": "Germany",
                "GI": "Gibraltar",
                "GR": "Greece",
                "GG": "Guernsey",
                "HU": "Hungary",
                "IS": "Iceland",
                "IE": "Ireland",
                "IM": "Isle of Man",
                "IT": "Italy",
                "JE": "Jersey",
                "LV": "Latvia",
                "LI": "Liechtenstein",
                "LT": "Lithuania",
                "LU": "Luxembourg",
                "MK": "Macedonia",
                "MT": "Malta",
                "FX": "Metropolitan France",
                "MD": "Moldova",
                "MC": "Monaco",
                "ME": "Montenegro",
                "NL": "Netherlands",
                "NO": "Norway",
                "PL": "Poland",
                "PT": "Portugal",
                "RO": "Romania",
                "RU": "Russia",
                "SM": "San Marino",
                "RS": "Serbia",
                "CS": "Serbia and Montenegro",
                "SK": "Slovakia",
                "SI": "Slovenia",
                "ES": "Spain",
                "SJ": "Svalbard and Jan Mayen",
                "SE": "Sweden",
                "CH": "Switzerland",
                "UA": "Ukraine",
                "SU": "Union of Soviet Socialist Republics",
                "GB": "United Kingdom",
                "VA": "Vatican City",
                "AX": "Åland Islands"
            }
        },
        "AU": {
            "name": "Australia",
            "countries": {
                "AS": "American Samoa",
                "AQ": "Antarctica",
                "AU": "Australia",
                "BV": "Bouvet Island",
                "UM": "U.S. Minor Outlying Islands",
                "VU": "Vanuatu",
                "WF": "Wallis and Futuna"
            }
        },
        "AM": {
            "name": "America",
            "countries": {
                "AI": "Anguilla",
                "AG": "Antigua and Barbuda",
                "AR": "Argentina",
                "AW": "Aruba",
                "BS": "Bahamas",
                "BB": "Barbados",
                "BZ": "Belize",
                "BM": "Bermuda",
                "VI": "U.S. Virgin Islands",
                "US": "United States",
                "UY": "Uruguay",
                "VE": "Venezuela"
            }
        },
        "ME": {
            "name": "Middle East",
            "countries": {
                "IR": "Iran",
                "IQ": "Iraq",
                "IL": "Israel",
                "JO": "Jordan",
                "KW": "Kuwait",
                "OM": "Oman",
                "QA": "Qatar",
                "SA": "Saudi Arabia",
                "SY": "Syria",
                "TR": "Turkey"
            }
        }
    }
    var languages = {
        "ab": {
            "name": "Abkhaz",
            "nativeName": "аҧсуа"
        },
        "aa": {
            "name": "Afar",
            "nativeName": "Afaraf"
        },
        "af": {
            "name": "Afrikaans",
            "nativeName": "Afrikaans"
        },
        "ak": {
            "name": "Akan",
            "nativeName": "Akan"
        },
        "sq": {
            "name": "Albanian",
            "nativeName": "Shqip"
        },
        "am": {
            "name": "Amharic",
            "nativeName": "አማርኛ"
        },
        "ar": {
            "name": "Arabic",
            "nativeName": "العربية"
        },
        "an": {
            "name": "Aragonese",
            "nativeName": "Aragonés"
        },
        "hy": {
            "name": "Armenian",
            "nativeName": "Հայերեն"
        },
        "as": {
            "name": "Assamese",
            "nativeName": "অসমীয়া"
        },
        "av": {
            "name": "Avaric",
            "nativeName": "авар мацӀ, магӀарул мацӀ"
        },
        "ae": {
            "name": "Avestan",
            "nativeName": "avesta"
        },
        "ay": {
            "name": "Aymara",
            "nativeName": "aymar aru"
        },
        "az": {
            "name": "Azerbaijani",
            "nativeName": "azərbaycan dili"
        },
        "bm": {
            "name": "Bambara",
            "nativeName": "bamanankan"
        },
        "ba": {
            "name": "Bashkir",
            "nativeName": "башҡорт теле"
        },
        "eu": {
            "name": "Basque",
            "nativeName": "euskara, euskera"
        },
        "be": {
            "name": "Belarusian",
            "nativeName": "Беларуская"
        },
        "bn": {
            "name": "Bengali",
            "nativeName": "বাংলা"
        },
        "bh": {
            "name": "Bihari",
            "nativeName": "भोजपुरी"
        },
        "bi": {
            "name": "Bislama",
            "nativeName": "Bislama"
        },
        "bs": {
            "name": "Bosnian",
            "nativeName": "bosanski jezik"
        },
        "br": {
            "name": "Breton",
            "nativeName": "brezhoneg"
        },
        "bg": {
            "name": "Bulgarian",
            "nativeName": "български език"
        },
        "my": {
            "name": "Burmese",
            "nativeName": "ဗမာစာ"
        },
        "ca": {
            "name": "Catalan; Valencian",
            "nativeName": "Català"
        },
        "ch": {
            "name": "Chamorro",
            "nativeName": "Chamoru"
        },
        "ce": {
            "name": "Chechen",
            "nativeName": "нохчийн мотт"
        },
        "ny": {
            "name": "Chichewa; Chewa; Nyanja",
            "nativeName": "chiCheŵa, chinyanja"
        },
        "zh": {
            "name": "Chinese",
            "nativeName": "中文 (Zhōngwén), 汉语, 漢語"
        },
        "cv": {
            "name": "Chuvash",
            "nativeName": "чӑваш чӗлхи"
        },
        "kw": {
            "name": "Cornish",
            "nativeName": "Kernewek"
        },
        "co": {
            "name": "Corsican",
            "nativeName": "corsu, lingua corsa"
        },
        "cr": {
            "name": "Cree",
            "nativeName": "ᓀᐦᐃᔭᐍᐏᐣ"
        },
        "hr": {
            "name": "Croatian",
            "nativeName": "hrvatski"
        },
        "cs": {
            "name": "Czech",
            "nativeName": "česky, čeština"
        },
        "da": {
            "name": "Danish",
            "nativeName": "dansk"
        },
        "dv": {
            "name": "Divehi; Dhivehi; Maldivian;",
            "nativeName": "ދިވެހި"
        },
        "nl": {
            "name": "Dutch",
            "nativeName": "Nederlands, Vlaams"
        },
        "en": {
            "name": "English",
            "nativeName": "English"
        },
        "eo": {
            "name": "Esperanto",
            "nativeName": "Esperanto"
        },
        "et": {
            "name": "Estonian",
            "nativeName": "eesti, eesti keel"
        },
        "ee": {
            "name": "Ewe",
            "nativeName": "Eʋegbe"
        },
        "fo": {
            "name": "Faroese",
            "nativeName": "føroyskt"
        },
        "fj": {
            "name": "Fijian",
            "nativeName": "vosa Vakaviti"
        },
        "fi": {
            "name": "Finnish",
            "nativeName": "suomi, suomen kieli"
        },
        "fr": {
            "name": "French",
            "nativeName": "français, langue française"
        },
        "ff": {
            "name": "Fula; Fulah; Pulaar; Pular",
            "nativeName": "Fulfulde, Pulaar, Pular"
        },
        "gl": {
            "name": "Galician",
            "nativeName": "Galego"
        },
        "ka": {
            "name": "Georgian",
            "nativeName": "ქართული"
        },
        "de": {
            "name": "German",
            "nativeName": "Deutsch"
        },
        "el": {
            "name": "Greek, Modern",
            "nativeName": "Ελληνικά"
        },
        "gn": {
            "name": "Guaraní",
            "nativeName": "Avañeẽ"
        },
        "gu": {
            "name": "Gujarati",
            "nativeName": "ગુજરાતી"
        },
        "ht": {
            "name": "Haitian; Haitian Creole",
            "nativeName": "Kreyòl ayisyen"
        },
        "ha": {
            "name": "Hausa",
            "nativeName": "Hausa, هَوُسَ"
        },
        "he": {
            "name": "Hebrew (modern)",
            "nativeName": "עברית"
        },
        "hz": {
            "name": "Herero",
            "nativeName": "Otjiherero"
        },
        "hi": {
            "name": "Hindi",
            "nativeName": "हिन्दी, हिंदी"
        },
        "ho": {
            "name": "Hiri Motu",
            "nativeName": "Hiri Motu"
        },
        "hu": {
            "name": "Hungarian",
            "nativeName": "Magyar"
        },
        "ia": {
            "name": "Interlingua",
            "nativeName": "Interlingua"
        },
        "id": {
            "name": "Indonesian",
            "nativeName": "Bahasa Indonesia"
        },
        "ie": {
            "name": "Interlingue",
            "nativeName": "Originally called Occidental; then Interlingue after WWII"
        },
        "ga": {
            "name": "Irish",
            "nativeName": "Gaeilge"
        },
        "ig": {
            "name": "Igbo",
            "nativeName": "Asụsụ Igbo"
        },
        "ik": {
            "name": "Inupiaq",
            "nativeName": "Iñupiaq, Iñupiatun"
        },
        "io": {
            "name": "Ido",
            "nativeName": "Ido"
        },
        "is": {
            "name": "Icelandic",
            "nativeName": "Íslenska"
        },
        "it": {
            "name": "Italian",
            "nativeName": "Italiano"
        },
        "iu": {
            "name": "Inuktitut",
            "nativeName": "ᐃᓄᒃᑎᑐᑦ"
        },
        "ja": {
            "name": "Japanese",
            "nativeName": "日本語 (にほんご/にっぽんご)"
        },
        "jv": {
            "name": "Javanese",
            "nativeName": "basa Jawa"
        },
        "kl": {
            "name": "Kalaallisut, Greenlandic",
            "nativeName": "kalaallisut, kalaallit oqaasii"
        },
        "kn": {
            "name": "Kannada",
            "nativeName": "ಕನ್ನಡ"
        },
        "kr": {
            "name": "Kanuri",
            "nativeName": "Kanuri"
        },
        "ks": {
            "name": "Kashmiri",
            "nativeName": "कश्मीरी, كشميري‎"
        },
        "kk": {
            "name": "Kazakh",
            "nativeName": "Қазақ тілі"
        },
        "km": {
            "name": "Khmer",
            "nativeName": "ភាសាខ្មែរ"
        },
        "ki": {
            "name": "Kikuyu, Gikuyu",
            "nativeName": "Gĩkũyũ"
        },
        "rw": {
            "name": "Kinyarwanda",
            "nativeName": "Ikinyarwanda"
        },
        "ky": {
            "name": "Kirghiz, Kyrgyz",
            "nativeName": "кыргыз тили"
        },
        "kv": {
            "name": "Komi",
            "nativeName": "коми кыв"
        },
        "kg": {
            "name": "Kongo",
            "nativeName": "KiKongo"
        },
        "ko": {
            "name": "Korean",
            "nativeName": "한국어 (韓國語), 조선말 (朝鮮語)"
        },
        "ku": {
            "name": "Kurdish",
            "nativeName": "Kurdî, كوردی‎"
        },
        "kj": {
            "name": "Kwanyama, Kuanyama",
            "nativeName": "Kuanyama"
        },
        "la": {
            "name": "Latin",
            "nativeName": "latine, lingua latina"
        },
        "lb": {
            "name": "Luxembourgish, Letzeburgesch",
            "nativeName": "Lëtzebuergesch"
        },
        "lg": {
            "name": "Luganda",
            "nativeName": "Luganda"
        },
        "li": {
            "name": "Limburgish, Limburgan, Limburger",
            "nativeName": "Limburgs"
        },
        "ln": {
            "name": "Lingala",
            "nativeName": "Lingála"
        },
        "lo": {
            "name": "Lao",
            "nativeName": "ພາສາລາວ"
        },
        "lt": {
            "name": "Lithuanian",
            "nativeName": "lietuvių kalba"
        },
        "lu": {
            "name": "Luba-Katanga",
            "nativeName": ""
        },
        "lv": {
            "name": "Latvian",
            "nativeName": "latviešu valoda"
        },
        "gv": {
            "name": "Manx",
            "nativeName": "Gaelg, Gailck"
        },
        "mk": {
            "name": "Macedonian",
            "nativeName": "македонски јазик"
        },
        "mg": {
            "name": "Malagasy",
            "nativeName": "Malagasy fiteny"
        },
        "ms": {
            "name": "Malay",
            "nativeName": "bahasa Melayu, بهاس ملايو‎"
        },
        "ml": {
            "name": "Malayalam",
            "nativeName": "മലയാളം"
        },
        "mt": {
            "name": "Maltese",
            "nativeName": "Malti"
        },
        "mi": {
            "name": "Māori",
            "nativeName": "te reo Māori"
        },
        "mr": {
            "name": "Marathi (Marāṭhī)",
            "nativeName": "मराठी"
        },
        "mh": {
            "name": "Marshallese",
            "nativeName": "Kajin M̧ajeļ"
        },
        "mn": {
            "name": "*n",
            "nativeName": "монгол"
        },
        "na": {
            "name": "Nauru",
            "nativeName": "Ekakairũ Naoero"
        },
        "nv": {
            "name": "Navajo, Navaho",
            "nativeName": "Diné bizaad, Dinékʼehǰí"
        },
        "nb": {
            "name": "Norwegian Bokmål",
            "nativeName": "Norsk bokmål"
        },
        "nd": {
            "name": "North Ndebele",
            "nativeName": "isiNdebele"
        },
        "ne": {
            "name": "Nepali",
            "nativeName": "नेपाली"
        },
        "ng": {
            "name": "Ndonga",
            "nativeName": "Owambo"
        },
        "nn": {
            "name": "Norwegian Nynorsk",
            "nativeName": "Norsk nynorsk"
        },
        "no": {
            "name": "Norwegian",
            "nativeName": "Norsk"
        },
        "ii": {
            "name": "Nuosu",
            "nativeName": "ꆈꌠ꒿ Nuosuhxop"
        },
        "nr": {
            "name": "South Ndebele",
            "nativeName": "isiNdebele"
        },
        "oc": {
            "name": "Occitan",
            "nativeName": "Occitan"
        },
        "oj": {
            "name": "Ojibwe, Ojibwa",
            "nativeName": "ᐊᓂᔑᓈᐯᒧᐎᓐ"
        },
        "cu": {
            "name": "Old Church Slavonic, Church Slavic, Church Slavonic, Old Bulgarian, Old Slavonic",
            "nativeName": "ѩзыкъ словѣньскъ"
        },
        "om": {
            "name": "Oromo",
            "nativeName": "Afaan Oromoo"
        },
        "or": {
            "name": "Oriya",
            "nativeName": "ଓଡ଼ିଆ"
        },
        "os": {
            "name": "Ossetian, Ossetic",
            "nativeName": "ирон æвзаг"
        },
        "pa": {
            "name": "Panjabi, Punjabi",
            "nativeName": "ਪੰਜਾਬੀ, پنجابی‎"
        },
        "pi": {
            "name": "Pāli",
            "nativeName": "पाऴि"
        },
        "fa": {
            "name": "Persian",
            "nativeName": "فارسی"
        },
        "pl": {
            "name": "Polish",
            "nativeName": "polski"
        },
        "ps": {
            "name": "Pashto, Pushto",
            "nativeName": "پښتو"
        },
        "pt": {
            "name": "Portuguese",
            "nativeName": "Português"
        },
        "qu": {
            "name": "Quechua",
            "nativeName": "Runa Simi, Kichwa"
        },
        "rm": {
            "name": "Romansh",
            "nativeName": "rumantsch grischun"
        },
        "rn": {
            "name": "Kirundi",
            "nativeName": "kiRundi"
        },
        "ro": {
            "name": "Romanian, Moldavian, Moldovan",
            "nativeName": "română"
        },
        "ru": {
            "name": "Russian",
            "nativeName": "русский язык"
        },
        "sa": {
            "name": "Sanskrit (Saṁskṛta)",
            "nativeName": "संस्कृतम्"
        },
        "sc": {
            "name": "Sardinian",
            "nativeName": "sardu"
        },
        "sd": {
            "name": "Sindhi",
            "nativeName": "सिन्धी, سنڌي، سندھی‎"
        },
        "se": {
            "name": "Northern Sami",
            "nativeName": "Davvisámegiella"
        },
        "sm": {
            "name": "Samoan",
            "nativeName": "gagana faa Samoa"
        },
        "sg": {
            "name": "Sango",
            "nativeName": "yângâ tî sängö"
        },
        "sr": {
            "name": "Serbian",
            "nativeName": "српски језик"
        }
    }

    function getContinent(code) {
        for (continent in continents) {
            if (continents[continent].countries[code]) {
                return continents[continent];
            }
        }
    }

    function createLangArray() {
        var lang = {};

        $('link[rel="alternate"]').each(function () {
            var arr = $(this).attr('hrefLang').split('-'), CD1 = arr[1].toUpperCase(), CD2 = arr[0];

            var continent = getContinent(CD1);
            var language = languages[CD2].name;

            // console.log(arr, CD1, continent);
            if (typeof lang[continent.name] == "undefined") {
                lang[continent.name] = {country:[]};
            }

            var country = [];
            for(var k in continent.countries){
                if(k == CD1){
                    country.push({name:continent.countries[k], lang:language});
                }
            }

            lang[continent.name].country = lang[continent.name].country.concat(country);
        });

        console.log(lang);
    }

    createLangArray();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<link rel="alternate" href="/de-ch/index.html" hreflang="de-ch" type="text/html">
<link rel="alternate" href="/en-gb/index.html" hreflang="en-gb" type="text/html">
<link rel="alternate" href="/en-hk/index.html" hreflang="en-hk" type="text/html">
<link rel="alternate" href="/fr-ch/index.html" hreflang="fr-ch" type="text/html">
<link rel="alternate" href="/it-ch/index.html" hreflang="it-ch" type="text/html">
<link rel="alternate" href="/zh-hk/index.html" hreflang="zh-hk" type="text/html">

Result

{
    "Europe":{
        "country":[
            {
                "name":"Switzerland",
                "lang":"German"
            },
            {
                "name":"United Kingdom",
                "lang":"English"
            },
            {
                "name":"Switzerland",
                "lang":"French"
            },
            {
                "name":"Switzerland",
                "lang":"Italian"
            }]
    },
    "Asia":{
        "country":[
            {
                "name":"* SAR China",
                "lang":"English"
            },
            {
                "name":"* SAR China",
                "lang":"Chinese"
            }]
    }
}