gar*_*dni 2 javascript arrays trim
我有一个非常简单的字符串,它可以包含一个可能包含空格的列表:
string = "one, two,three ";
Run Code Online (Sandbox Code Playgroud)
我想首先拆分字符串,以创建一个包含三个字符串的数组,然后使用删除任何空格.trim()
array = string.split(',').trim();
Run Code Online (Sandbox Code Playgroud)
返回 "one","two","three"
但是有时它会失败并返回错误 .trim() is not a function
我读到.trim()返回一个新字符串,而不是当前字符串的修剪版本。所以我用了一个 for 循环来做上面的事情:
array = string.split(',');
for (var i = 0; i < array.length; i++) {
var item = array[i].trim();
array.push(item);
}
Run Code Online (Sandbox Code Playgroud)
返回 "one","two","three"
我的问题是,谁能解释为什么我只是有时会收到错误?如果数组从未从我的示例中改变,并且任何人都可以为我的修复提供更清晰的解决方案。
在符合 ES6 的运行时(即:node 4+)中,您可以使用箭头函数,它可以为您提供更简洁的代码来实现您的目标:
> "one, two, three ".split(',').map(s => s.trim());
[ 'one', 'two', 'three' ]
Run Code Online (Sandbox Code Playgroud)
split()不适用于数组,但适用于字符串。当您将 String 写入数组时,您必须通过 获取该字符串array[0],因为该字符串是第一个元素。
如果将字符串拆分为数组,则可以调用 map 函数并修剪新创建的数组中的每个值。像这样:
array = ["one, two,three "];
array = array[0].split(',')
array = array.map(function(a){return a.trim()})
Run Code Online (Sandbox Code Playgroud)
或者简而言之:
array = ["one, two,three "][0].split(',').map(function(a){return a.trim()})
Run Code Online (Sandbox Code Playgroud)