首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.trim()不是函数

.trim()不是函数
EN

Stack Overflow用户
提问于 2015-10-07 19:40:51
回答 4查看 62.8K关注 0票数 2

我有一个非常简单的字符串,它可以包含一个可能包含空格的列表:

代码语言:javascript
复制
string = "one, two,three ";

我想首先用,拆分字符串,创建一个包含三个字符串的数组,然后使用.trim()删除所有空格

代码语言:javascript
复制
array = string.split(',').trim();

它返回"one","two","three"

但是,有时它会失败并返回错误.trim() is not a function

我读到.trim()返回一个新的字符串,而不是当前字符串的修剪版本。所以我使用了一个for循环来做上面的事情:

代码语言:javascript
复制
array = string.split(',');
for (var i = 0; i < array.length; i++) {
    var item = array[i].trim();
    array.push(item);
}

它返回"one","two","three"

我的问题是,有没有人能解释一下为什么我只是偶尔会遇到这个错误?如果数组从未从我的示例中更改过,那么是否有人可以为我的修复提供一个更干净的解决方案。

EN

回答 4

Stack Overflow用户

发布于 2015-10-07 19:57:22

split()不适用于数组,但适用于字符串。将字符串写入数组时,必须通过array[0]获取该字符串,因为该字符串是第一个元素。

如果将字符串拆分为数组,则可以调用map函数并修剪新创建的数组中的每个值。如下所示:

代码语言:javascript
复制
array = ["one, two,three "];
array = array[0].split(',')
array = array.map(function(a){return a.trim()})

或者简而言之:

代码语言:javascript
复制
array = ["one, two,three "][0].split(',').map(function(a){return a.trim()})
票数 6
EN

Stack Overflow用户

发布于 2015-11-22 19:48:39

在与ES6兼容的运行时(即: node 4+)中,您可以使用箭头函数,该函数为您提供了较少冗长的代码来实现您的目标:

代码语言:javascript
复制
> "one, two, three ".split(',').map(s => s.trim());
[ 'one', 'two', 'three' ]
票数 3
EN

Stack Overflow用户

发布于 2016-08-18 18:27:45

我在尝试使用"for (splitTokens中的var i)“迭代String.split的输出时也遇到了同样的问题。注意:这只发生在我的浏览器(在我的例子中是Chrome),即在节点进程中使用相同的代码时不会发生这种情况。

它把我弄糊涂了,直到我连接了一个调试器,然后我发现了问题所在。String.split返回一个数组对象实例(splitTokens),该实例上有函数("each“等)。"for (splitTokens中的var i)“循环也会迭代函数,所以splitTokensi会返回例如数组实例的each函数,如果我尝试调用"trim()”(因为函数对象没有名为trim()的函数),就会导致事情爆炸。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32991269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档