如何在javascript中使用大写函数映射数组?
我很感兴趣,如果有任何函数,如来自php的array_map或array_walk。
不需要为所有arrays旅行。 我可以为自己这样做。
var array = ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab']; // i would like something like this if exists - function(array, 'upperCase');
您可以使用$ .map()将String.toUpperCase() (或String.toLocaleUpperCase() ,如果适用)应用于数组项:
var upperCasedArray = $.map(array, String.toUpperCase);
请注意$.map()
构建一个新数组。 如果要在适当位置修改现有数组,可以使用带有匿名函数的$ .each() :
$.each(array, function(index, item) { array[index] = item.toUpperCase(); });
更新:正如afanasy在下面的评论中正确指出的那样,直接映射String.toUpperCase
只能在基于Gecko的浏览器中使用。
要支持其他浏览器,您可以提供自己的function:
var upperCasedArray = $.map(array, function(item, index) { return item.toUpperCase(); });
查看JavaScript Array.map以获取官方JavaScript地图function的信息。 您可以在那里使用样本来查看该function的工作原理。 尝试将其复制到示例框中:
var array = ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab']; var uppers = array.map(function(x) { return x.toUpperCase(); }); console.log(uppers);
它将打印:
DOM,LUN,MAR,MER,GIO,VEN,SAB
这可能是一种矫枉过正,但你也可以这样做
var upperCaseArray = array.map(String.prototype.toUpperCase.call.bind(String.prototype.toUpperCase));
您可以为它实现一个function:
Array.prototype.myUcase=function() { for (i=0;i
用法
var fruits=["Banana","Orange","Apple","Mango"]; fruits.myUcase();
结果
BANANA,ORANGE,APPLE,MANGO
参考链接
您可以考虑使用提供标准function操作的Underscore.js库。
那么代码就像下面这样简单:
_.map(array, function (x) { return x.toUpperCase(); });
map()
在某种程度上类似于array_walk
Javascript有一个map()方法。 一个很好的参考资料在http://www.tutorialspoint.com/javascript/array_map.htm
这里是没有创建循环的单行程序或兼容ES3的function(可能更快,因为你只调用了一次OnUCase,还没有测试过)
// 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(",");
我知道派对有点晚了,但我想在此处添加这个作为另一种代表团的方式。
var array = ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab']; "".toUpperCase.apply(array).split(',')
类似于之前的for循环答案,这个使用javascript的一些更基本的function:
function looptoUpper(arr){ var newArr = []; for (var i = 0; i < arr.length; i++){ newArr.push(arr[i].toUpperCase()); } return newArr; } looptoUpper(['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab']);