我在编写代码时遇到了一些麻烦。 我有一个需要分隔和分析的单词列表,而不是列中的行。
此代码实际上可以很好地完成此工作。 实际工作方式:
const Obj = {
"0":"Mario, Louigi, Peach",
"1":"Wario, King Kong, Bomberman",
"2":"Dracula, Doctor Z, Raikou"
};
const Obj3 = [];
var count = Obj[0].split(", ").length;
var countOuter = Object.keys(Obj).length;
for( var i = 0; i < count; i++){
var string = [];
for( var j = 0; j < countOuter; j++){
string.push(Obj[j].split(", ")[i]);
}
Obj3[i] = string;
}
console.log(Obj3);
但是,如果中间有一个逗号,例如:Robot先生,它会将逗号视为分隔符,并将Robot先生一分为二而不是一个。
示例:
const Obj = {
"0":"Mr, Robot, Louigi, Peach",
"1":"Wario, King Kong, Bomberman",
"2":"Dracula, Doctor Z, Raikou"
};
const Obj3 = [];
var count = Obj[0].split(", ").length;
var countOuter = Object.keys(Obj).length;
for( var i = 0; i < count; i++){
var string = [];
for( var j = 0; j < countOuter; j++){
string.push(Obj[j].split(", ")[i]);
}
Obj3[i] = string;
}
console.log(Obj3);
然后创建一个未定义的记录,导致我出错。 任何想法如何解决这个问题? 在此先感谢!
答案 0 :(得分:0)
如果在用逗号将名称连起来之前无法获得名称,则可以使用正则表达式定界符来分割它们。例如,如果只用两个非空白字符隔开逗号就足够了,则可以使用:
.split(/(?<=[^ ,]{3,}), /)
仅当此正则表达式前面至少有3个不匹配', '
或' '
的字符时,此正则表达式才匹配','
。