如何在javascript中使用大写函数映射数组?

use*_*048 17 javascript arrays jquery uppercase

我很感兴趣,如果有任何函数,如来自php的array_map或array_walk.

不需要为所有阵列旅行.我可以为自己做到这一点.

var array = ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab'];
// i would like something like this if exists - function(array, 'upperCase');
Run Code Online (Sandbox Code Playgroud)

Fré*_*idi 21

您可以使用$ .map()String.toUpperCase()(或String.toLocaleUpperCase(),如果适用)应用于数组项:

var upperCasedArray = $.map(array, String.toUpperCase);
Run Code Online (Sandbox Code Playgroud)

请注意,$.map()构建一个新数组.如果要在适当位置修改现有数组,可以将$ .each()与匿名函数一起使用:

$.each(array, function(index, item) {
    array[index] = item.toUpperCase();
});
Run Code Online (Sandbox Code Playgroud)

更新:正如在下面的评论中正确指出的那样,String.toUpperCase直接映射仅适用于基于Gecko的浏览器.

要支持其他浏览器,您可以提供自己的功能:

var upperCasedArray = $.map(array, function(item, index) {
    return item.toUpperCase();
});
Run Code Online (Sandbox Code Playgroud)

  • String.toUpperCase未定义,因此$ .map不起作用 (2认同)

nkr*_*ron 7

查看JavaScript Array.map以获取官方JavaScript地图功能的信息.您可以在那里使用样本来查看该功能的工作原理.尝试将其复制到示例框中:

var array = ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab'];
var uppers = array.map(function(x) { return x.toUpperCase(); });
console.log(uppers);
Run Code Online (Sandbox Code Playgroud)

它将打印:

DOM,LUN,MAR,MER,GIO,VEN,SAB
Run Code Online (Sandbox Code Playgroud)


Sha*_*M R 6

这可能是一种矫枉过正,但你也可以这样做

var upperCaseArray = array.map(String.prototype.toUpperCase.call.bind(String.prototype.toUpperCase));
Run Code Online (Sandbox Code Playgroud)

  • 该代码有点令人困惑,因为代码的`String.prototype.toUpperCase.call`部分只是访问[Function的调用](http://www.javascripture.com/Function#call)方法.该方法对于所有函数都是相同的,因此您可以将任何函数粘贴到.call的左侧而不更改行为.我建议将它更改为`Function.prototype.call ...`以明确表示您正在使用Function的调用,而不是toUpperCase函数的特殊功能. (2认同)

Suj*_*wal 5

您可以为它实现一个功能:

Array.prototype.myUcase=function()
{
  for (i=0;i<this.length;i++)
    {
    this[i]=this[i].toUpperCase();
    }
}
Run Code Online (Sandbox Code Playgroud)

用法

var fruits=["Banana","Orange","Apple","Mango"];
fruits.myUcase();
Run Code Online (Sandbox Code Playgroud)

结果

BANANA,ORANGE,APPLE,MANGO 
Run Code Online (Sandbox Code Playgroud)

参考链接


End*_*ess 5

这是一行代码,无需创建循环或与 ES3 兼容的函数,它也更快,因为您只调用 toUpperCase 一次

// watch out for strings with comma (eg: ["hi, max"]) then use custom join/split()
// or just use something safer such as Array.map()
var uppercaseArray = array.toString().toUpperCase().split(",");
var uppercaseArray = array.join(0).toUpperCase().split(0);
var uppercaseArray = (array+"").toUpperCase().split(",");
Run Code Online (Sandbox Code Playgroud)