2017-02-03 7 views
-1

Probleme beim Erstellen einer Suche ohne Groß-/Kleinschreibung in meiner Ionic App. Ich habe die folgenden, die Tags in firebase schiebt. Wie kann ich das gesamte Array in Kleinbuchstaben konvertieren, bevor ich in die Datenbank gehe?Texteingabe in Kleinbuchstaben umwandeln - Javascript

$scope.addToTag = function(tag) { 
    if ($scope.productTags.indexOf(tag) == -1) 
    $scope.productTags.push(tag); 

    $scope.productTags[tag] = true; 

    var productTags = {}; 
    var addToTag = function(tag) { 
    productTags[tag] = true; 
    }; 
}; 

Vielen Dank im Voraus!

+0

Schleife durch das Array und setzt 'arrayname [i] .tolowercase()' –

Antwort

3

können Sie eine Karte für, in verwenden für von, for-Schleife, für jeden ... dazu. Kombiniert mit toLowerCase Funktion für jedes Element.

Verwendung mit Karte:

var tags = ['ANDROID', 'iOS', 'Windows Phone']; 

var lowerCaseTags = tags.map(function (tag) { 
    return tag.toLowerCase(); 
}); 

console.log(lowerCaseTags); 

Verwendung mit in:

var tags = ['ANDROID', 'iOS', 'Windows Phone']; 
var lowerCaseTags = []; 

for (var tag in tags) { 
    lowerCaseTags.push(tag.toLowerCase()); 
} 

console.log(lowerCaseTags); 

Verwendung mit für von:

var tags = ['ANDROID', 'iOS', 'Windows Phone']; 
var lowerCaseTags = []; 

for (var tag of tags) { 
    lowerCaseTags.push(tag.toLowerCase()); 
} 

console.log(lowerCaseTags); 

Verbrauch mit for-Schleife:

var tags = ['ANDROID', 'iOS', 'Windows Phone']; 
var lowerCaseTags = []; 

for (var i = 0; i < tags.length; i++) { 
    var tag = tags[i]; 
    lowerCaseTags.push(tag.toLowerCase()); 
} 

console.log(lowerCaseTags); 

Verwendung mit forEach:

var tags = ['ANDROID', 'iOS', 'Windows Phone']; 
var lowerCaseTags = []; 

tags.forEach(function(tag) { 
    lowerCaseTags.push(tag.toLowerCase()); 
}); 

console.log(lowerCaseTags); 
+0

Wow, tolle Antwort! – MacD

+1

Sie sollten die bekannten Einschränkungen bei der Iteration über Arrays mit * for..in * und * for..of * berücksichtigen. Außerdem berücksichtigt die * for * -Schleife keine Sparse-Arrays. Ein Unterscheidungsmerkmal von * forEach * ist, dass es das Array ändern kann, ohne ein neues zu erstellen, aber Sie haben trotzdem ein neues Array erstellt. – RobG

0

Sie brauchen keine Schleife dafür. Sie können die Array-Methode map() verwenden.

yourArray = yourArray.map(item => item.toLowerCase()); 

Sie übergeben eine Funktion, die jedes Element Ihres Arrays konvertiert und ein neues Array zurückgibt.

+0

meine Implementierung einfach So wäre productTags = productTags.map (item => item.toLowerCase()); – MacD

+0

Ohne ein neues Array zu erstellen: 'array.forEach ((v, i, a) => a [i] = v.toLowerCase());'. – RobG

+0

Wahrscheinlich ja :) @RobG Ich möchte nicht mutieren :) –

Verwandte Themen