Я видел вопросы, но ни один из них не помог мне. У меня есть такая строка:
var Lang_Array1 = "HU, бла, бла, бла, EN, бла, бла, бла, бла, DE, бла, бла, бла, RO, бла, бла, бла ";
Я хочу, чтобы эта строка находилась в разных массивах на основе разделителей " HU "," EN "," DE "," RO ".
Мой подход в настоящее время таков: ( Работает, но не слишком элегантно ):
var Lang_Array1 = Lang_Array.split(",");
console.log(typeof(Lang_Array));
console.log(Lang_Array);
var HU_Langs = [];
var EN_Langs = [];
var DE_Langs = [];
var RO_Langs = [];
for(var i = 0; i < Lang_Array1.length;i++){
if(Lang_Array1[i] != "EN"){
if(Lang_Array1[i] != ""){
HU_Langs[i] = Lang_Array1[i];
}
}else{
for(i;i < Lang_Array1.length;i++){
if(Lang_Array1[i] != "DE"){
if(Lang_Array1[i] != ""){
EN_Langs[i] = Lang_Array1[i];
}
}else{
for(i;i < Lang_Array1.length;i++){
if(Lang_Array1[i] != "RO"){
if(Lang_Array1[i] != ""){
DE_Langs[i] = Lang_Array1[i];
}
}else{
for(i;i < Lang_Array1.length;i++){
if(Lang_Array1[i] != ""){
RO_Langs[i] = Lang_Array1[i];
}
}
break;
}
}
break;
}
}
break;
}
}
Таким образом, я получаю то, что хочу, но хочу улучшить это как-то. Массивы:
HU_Langs =["HU","blah","blah","blah"];
EN_Langs =["EN","blah","blah","blah"];
DE_Langs =["DE","blah","blah","blah"];
et c ...
Так как я могу улучшить этот код без вложенных циклов?
РЕДАКТИРОВАТЬ : Спасибо за все! Все ответы очень, очень хорошие. Мой вопрос не был ясным и достаточно подробным, но я решил его с помощью правильного ответа.
Вот функция теперь:
function Get_Language_Object(Lang_Array){
Lang_Array = Lang_Array.replace(/(\r\n|\n|\r)/gm, "");
var langs = ['HU', 'EN', 'DE', 'RO'];
var isLang = str => langs.includes(str);
var { HU: New_HU_Langs, EN: New_EN_Langs, DE: New_DE_Langs, RO: New_RO_Langs } = Lang_Array.split(',')
.reduce((r, str) => {
if(isLang(str)) r.push([]);
r[r.length - 1].push(str);
return r;
}, [])
.reduce((r, [code, ...arr]) => ({ ...r, [code]: arr }), {});
for(var i = 0; i < TAGS.length;i++){
arrLang.HU[TAGS[i]] = New_HU_Langs[i];
arrLang.EN[TAGS[i]] = New_EN_Langs[i];
arrLang.DE[TAGS[i]] = New_DE_Langs[i];
arrLang.RO[TAGS[i]] = New_RO_Langs[i];
}
Set_Actual_Language();
VNotify("Settings Notfy","Lang Set!","success",1500,"success32.png");
}