how to map an array with uppercase function in jav

2019-03-24 07:28发布

问题:

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']);