拆分函数的结果每次都给我一个字符而不是单词

Result from split function is giving me a character each time instead of word

var str = document.getElementById("kb").value.split('\n');
console.log(str);
for(var i=0; i<str.length;i++){

    document.getElementById("demo").innerHTML = str[i];
    var token = str[i].split(/[\[\]]|,+/).join(' ');
    document.getElementById("demo3").innerHTML = token;
    for(var j=0; j<token.length; j++){
        alert(token[j]);
        console.log(token);
    }

}

在这种情况下,我有一个文本区域,如果遇到 '\n'、'['、']' 和 ',',每个句子都会被拆分。

当我 运行 这样做时,它会显示一个警告框,一次只显示一个字符而不是整个单词。

我的textarea如下;

[幼儿]

[¬蹒跚学步,Child] ...

我希望 token[0] 是 Toddler,token[1] 是 ¬Toddler,token[2] 是 Child,等等

谢谢

在您的代码中 join returns 这里有一个字符串:
var token = lines[i].split(/[\[\]]|,+/).join(' ');
然后你迭代这个字符串中的字符。

这里有一个固定的解决方案(也是on jsfiddle):

var lines = document.getElementById("kb").value.split('\n');
console.log(lines);
for(var i=0; i < lines.length;i++){

    document.getElementById("demo").innerHTML = lines[i];
    // var token = lines[i].split(/[\[\]]|,+/).join(' '); // `join` returns string!
    var tokens = lines[i].split(/[\[\]]|,+/).filter( (str) => str.trim() );
    document.getElementById("demo3").innerHTML = tokens;
    for(var j=0; j<tokens.length; j++){
        alert(tokens[j]);
        console.log(tokens);
    }

}
<textarea id="kb">[Toddler] [¬Toddler,Child]</textarea>
<div id="demo"></div>
<div id="demo3"></div>

Array.filter is used with an arrow function 删除空白标记。