Skip to main content
Stack Overflow
  1. About
  2. For Teams

You are not logged in. Your edit will be placed in a queue until it is peer reviewed.

We welcome edits that make the post easier to understand and more valuable for readers. Because community members review edits, please try to make the post substantially better than how you found it, for example, by fixing grammar or adding additional resources and hyperlinks.

Required fields*

Required fields*

create 2 dimensional object or array with javascript

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">

Answer*

Draft saved
Draft discarded
Cancel
2
  • Okay, I have changed it, but how do I have to modify getContinent() and getCountry() to get them working again? Commented Nov 27, 2015 at 16:11
  • Sorry about my confusion with this question, i think i got it right now. Commented Nov 27, 2015 at 17:30

lang-js

AltStyle によって変換されたページ (->オリジナル) /