首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript map本机对象方法

Javascript map本机对象方法
EN

Stack Overflow用户
提问于 2010-11-13 02:28:58
回答 5查看 2.9K关注 0票数 3

在Python中,你可以这样做:

代码语言:javascript
复制
>>> list(map(str.upper, ['foo','bar']))
['FOO', 'BAR']

我希望能够在javascript中做类似的事情:

我已经使用原生地图实现( https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/map )在Chrome中尝试了以下功能:

代码语言:javascript
复制
['foo','bar'].map(String.prototype.toUpperCase)

['foo','bar'].map(String.prototype.toUpperCase.call)

为什么不打电话给工作呢?有没有什么很好的方法可以做到这一点,或者我必须把toUpperCase包装在一个回调函数中?Thx

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-11-13 02:34:17

现代浏览器支持这一点(although it is a recent addition)

代码语言:javascript
复制
var a = ['foo','bar'];
var b = a.map(String.toUpperCase);

alert(b[1]);

甚至是

代码语言:javascript
复制
var a = ['foo','bar'].map(String.toUpperCase);
alert(a[0]);

示例:http://www.jsfiddle.net/xPsba/

票数 1
EN

Stack Overflow用户

发布于 2012-11-10 21:41:22

尝试:

代码语言:javascript
复制
['foo','bar'].map(Function.prototype.call.bind(String.prototype.toUpperCase))

或者为了同样的效果:

代码语言:javascript
复制
['foo','bar'].map(Function.call.bind("".toUpperCase))

JavaScript对this的处理是一次糟糕的旅行。

票数 2
EN

Stack Overflow用户

发布于 2010-11-13 02:37:50

这是因为String.prototype.toUpperCasethis ( context )对象上运行,但是map函数不能将数组元素设置为context。它将其作为参数传递。一种解决方法是

代码语言:javascript
复制
['foo','bar'].map(function(k) { return String.prototype.toUpperCase.call(k) });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4167854

复制
相关文章

相似问题

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