2012-03-30 3 views

Antwort

19

Sie $.map() um String.toUpperCase() verwenden können (oder String.toLocaleUpperCase() falls), um Ihre Array-Elemente anwenden:

var upperCasedArray = $.map(array, String.toUpperCase); 

Beachten Sie, dass $.map() baut ein neues Array. Wenn Sie Ihr bestehendes Array an Ort und Stelle zu ändern, können Sie $.each() mit einer anonymen Funktion verwenden:

$.each(array, function(index, item) { 
    array[index] = item.toUpperCase(); 
}); 

Update: Wie Afanassi zu Recht in den Kommentaren unten weist darauf hin, Mapping String.toUpperCase direkt nur in Gecko arbeiten -basierte Browser.

die anderen Browsern zu unterstützen, können Sie Ihre eigene Funktion zur Verfügung stellen:

var upperCasedArray = $.map(array, function(item, index) { 
    return item.toUpperCase(); 
}); 
+2

String. toUpperCase ist undefiniert, so $ .map wird nicht funktionieren –

+0

@afanasy, wahr, ich benutze wahrscheinlich Firefox zu viel. Ich habe meine Antwort mit einer tragbaren Mapping-Lösung aktualisiert. –

4

Sie könnten die Bibliothek Underscore.js in Erwägung ziehen, die standardmäßige funktionale Operationen bietet.

Dann würde der Code so einfach sein wie:

_.map(array, function (x) { return x.toUpperCase(); }); 
+0

auch: '_.map (array, _.upperCase)' –

5

Sie können eine Funktion für sie implementieren:

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(); 

ERGEBNIS

BANANA,ORANGE,APPLE,MANGO 

Referenz LINK

7

Check out JavaScript Array.map für Informationen auf der offiziellen JavaScript Kartenfunktion. Sie können mit der Probe dort zu spielen, um zu sehen, wie die Funktion funktioniert.Versuchen Sie kopieren diese in das Feld Beispiel:

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

Und es wird Druck:

DOM,LUN,MAR,MER,GIO,VEN,SAB 
2

Und hier ist der Einzeiler ohne eine Schleife oder eine Funktion zu erstellen, die ES3 kompatibel ist (könnte schneller sein da Sie toUpperCase nur einmal aufrufen, nicht getestet)

// 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(","); 
6

Dieses zuviel des Guten sein kann, aber Sie tun können, auch

var upperCaseArray = array.map(String.prototype.toUpperCase.call.bind(String.prototype.toUpperCase)); 
+0

@nkrons Antwort ist ähnlich, aber weniger ausführlich. –

+2

Dieser Code ist ein wenig verwirrend, da der 'String.prototype.toUpperCase.call' Teil des Codes nur auf die Methode [Function's call] (http://www.javascripture.com/Function#call) zugreift. Diese Methode ist für alle Funktionen gleich, so dass Sie jede Funktion links von .call anheften können, ohne das Verhalten zu ändern. Ich würde vorschlagen, es in 'Function.prototype.call ...' zu ändern, um explizit zu sein, dass Sie den Aufruf von Function verwenden, kein spezielles Feature der toUpperCase-Funktion. – nkron

+0

Das klarere Beispiel ist: '['a', 'b', 'c']. Map (Funktion.prototype.call.bind (String.prototype.toUpperCase))' –

1

Ich verstehe, es ist ein wenig zu spät zur Party, aber ich wollte dies hier als eine andere Delegation Art und Weise, es zu tun.

var array = ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab']; 

"".toUpperCase.apply(array).split(',') 
+0

wow .... vorsichtig zu erklären, wie es ist Arbeiten. wie/warum ist das Konvertieren von Array auf String – aWebDeveloper

+0

sicher. Da ich 'toUpperCase' wollte, musste ich in der Lage sein, delegieren oder diese Funktionalität ausleihen. Da ich dafür ein Array benötigte, musste ich irgendwie den "Kontext" IN an das "toUpperCase" übergeben. anwenden (da wir ein Array verwenden), erlaubt dies. weil ich kein zweites arg übergeben habe, das erste arg "array", ist der kontext. Also im Grunde verteilt es es für mich ... dann teile ich es, um es wieder in ein Array zu verwandeln. –

0

Ähnlich wie bei einer vorherigen for-Schleife Antwort, diese verwendet man einige der grundlegenden Funktionen von 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']); 
Verwandte Themen