gpt4 book ai didi

javascript - 使用 javascript 创建二维对象或数组

转载 作者:行者123 更新时间:2023-12-02 15:22:03 25 4
gpt4 key购买 nike

我正在尝试构建一个基于 <link rel="alternate"> 的语言菜单网站头部的标签。

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

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

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

我需要一个可用于构建无序列表的数组或对象。类似这样的事情:

  • 大陆 1
    • 国家 1
      • 姓名
    • 国家/地区 2
      • 姓名
    • ...
  • 大陆 2
    • 国家 1
      • 姓名
    • 国家/地区 2
      • 姓名
  • ...

这是我的代码:

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

最佳答案

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

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

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

对此(将countries定义为Array):

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

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

参见this JSFiddle。

关于javascript - 使用 javascript 创建二维对象或数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33960909/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com