0

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
    • Country 2
      • name
      • lang
    • ...
  • Continent 2
    • Country 1
      • name
      • lang
    • Country 2
      • name
      • 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": "Hong Kong 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":"Mongolian",
          "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">

0

2 Answers 2

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.

Sign up to request clarification or add additional context in comments.

2 Comments

Okay, I have changed it, but how do I have to modify getContinent() and getCountry() to get them working again?
Sorry about my confusion with this question, i think i got it right now.
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": "Hong Kong 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": "Mongolian",
            "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":"Hong Kong SAR China",
                "lang":"English"
            },
            {
                "name":"Hong Kong SAR China",
                "lang":"Chinese"
            }]
    }
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.