可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I'm interested if there is any function like array_map or array_walk from php.
Don't need an for that travels all the array. I can do that for myself.
var array = ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab'];
// i would like something like this if exists - function(array, 'upperCase');
回答1:
You can use $.map() in order to apply String.toUpperCase() (or String.toLocaleUpperCase(), if appropriate) to your array items:
var upperCasedArray = $.map(array, String.toUpperCase);
Note that $.map()
builds a new array. If you want to modify your existing array in-place, you can use $.each() with an anonymous function:
$.each(array, function(index, item) {
array[index] = item.toUpperCase();
});
Update: As afanasy rightfully points out in the comments below, mapping String.toUpperCase
directly will only work in Gecko-based browsers.
To support the other browsers, you can provide your own function:
var upperCasedArray = $.map(array, function(item, index) {
return item.toUpperCase();
});
回答2:
Check out JavaScript Array.map for info on the official
JavaScript map function. You can play around with the sample there to
see how the function works. Try copying this into the example box:
var array = ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab'];
var uppers = array.map(function(x) { return x.toUpperCase(); });
console.log(uppers);
And it will print:
DOM,LUN,MAR,MER,GIO,VEN,SAB
回答3:
This may be an overkill but you can also do
var upperCaseArray = array.map(String.prototype.toUpperCase.call.bind(String.prototype.toUpperCase));
回答4:
You can implement a function for it:
Array.prototype.myUcase=function()
{
for (i=0;i<this.length;i++)
{
this[i]=this[i].toUpperCase();
}
}
USAGE
var fruits=["Banana","Orange","Apple","Mango"];
fruits.myUcase();
RESULT
BANANA,ORANGE,APPLE,MANGO
Reference LINK
回答5:
You could consider using the Underscore.js library which provides standard functional operations.
Then the code would be as simple as:
_.map(array, function (x) { return x.toUpperCase(); });
回答6:
map()
is somehow similar to array_walk
http://jqapi.com/#p=map
回答7:
Javascript has a map() method. A good reference is at http://www.tutorialspoint.com/javascript/array_map.htm
回答8:
And here is the one-liner without creating a loop or a function that is ES3 compatible
(might be faster since you only call toUpperCase once, haven't tested)
// 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(",");
回答9:
I understand it is a little late to the party, but I wanted to add this here as another Delegation way of doing it.
var array = ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab'];
"".toUpperCase.apply(array).split(',')
回答10:
Similar to a previous for loop answer, this one uses some of the more basic features of javascript:
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']);