gpt4 book ai didi

javascript - 如何在javascript中根据多个分隔符将字符串拆分为多个数组

转载 作者:行者123 更新时间:2023-11-28 16:53:38 25 4
gpt4 key购买 nike

我已经看到了这些问题,但没有一个对我有帮助。我有一个像这样的字符串:

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

等等...

那么如何在不使用嵌套 for 循环的情况下改进此代码呢?

编辑: 谢谢大家!所有的答案都非常非常好。我的问题不够清晰和详细,但我在正确答案的帮助下解决了它。

现在的功能是:

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");
}

最佳答案

按分隔符 (,) 拆分字符串,减少数组,并为每种语言代码添加一个新的子数组。将所有项目推送到最后一个子数组:

var Lang_Array1 = "HU,blah,blah,blah,EN,blah,blah,blah,blah,DE,blah,blah,blah,RO,blah,blah,blah";

var langs = ['HU', 'EN', 'DE', 'RO'];

var isLang = str => langs.includes(str);

var result = Lang_Array1.split(',')
.reduce((r, str) => {
if(isLang(str)) r.push([]);

r[r.length - 1].push(str);

return r;
}, []);

console.log(result);

如果要拆分为多个数组,请将子数组缩减为一个对象,然后使用解构将它们分配给变量:

var Lang_Array1 = "HU,blah,blah,blah,EN,blah,blah,blah,blah,DE,blah,blah,blah,RO,blah,blah,blah";

var langs = ['HU', 'EN', 'DE', 'RO'];

var isLang = str => langs.includes(str);

var { HU: HU_Langs, EN: EN_Langs, DE: DE_langs, RO: RO_langs } = Lang_Array1.split(',')
.reduce((r, str) => {
if(isLang(str)) r.push([]);

r[r.length - 1].push(str);

return r;
}, [])
.reduce((r, [code, ...arr]) => ({ ...r, [code]: arr }), {});

console.log(HU_Langs, EN_Langs, DE_langs, RO_langs);

关于javascript - 如何在javascript中根据多个分隔符将字符串拆分为多个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59612295/

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