javascript - 带String.trim的Array.map

pra*_*pes 8 javascript

以下为什么不工作?(Chrome,所以Arrays.map没有问题)

[" a ", "b", " c", "d "].map(String.prototype.trim)

TypeError: String.prototype.trim called on null or undefined
Run Code Online (Sandbox Code Playgroud)

Cer*_*rus 15

map 将数组的每个元素作为参数传递给函数:

[element1, e2].map(myFunction); // --> myFunction(element1); myFunction(e2)
Run Code Online (Sandbox Code Playgroud)

String.prototype.trim不是传递要剪裁的字符串的函数.您将该函数称为该字符串的方法,而不是:

" some string ".trim(); // "some string"
Run Code Online (Sandbox Code Playgroud)

trim在a中使用.map,您需要执行以下操作:

[" a ", "b", " c", "d "].map(function(e){return e.trim();});
Run Code Online (Sandbox Code Playgroud)

  • 或在ES6中这样写:`[“ a”,“ b”,“ c”,“ d”] .map(e => e.trim())` (2认同)

gre*_*uze 6

一个带有箭头功能的较短版本:

[" a ", "b", " c", "d "].map(e => e.trim());
Run Code Online (Sandbox Code Playgroud)


Ete*_*al1 5

这实际上是因为Array.map()函数应该有一个currentElement参数,String.prototype.trim而不带任何参数,因此我们不能这样称呼它.所以,你必须努力做到这一点:

[" a ", "b", " c", "d "].map(function(elem){
     return elem.trim();
});
Run Code Online (Sandbox Code Playgroud)