MDN wants to learn about developers like you: https://qsurvey.mozilla.com/s3/MDN-dev-survey

Diese Übersetzung ist unvollständig. Bitte helfen Sie, diesen Artikel aus dem Englischen zu übersetzen.

Die Methode some() überprüft ob ein Element des Arrays den als Funktion übergebenen Kriterien entspricht.

function isBiggerThan10(element, index, array) {
  return element > 10;
}

[2, 5, 8, 1, 4].some(isBiggerThan10);  // false
[12, 5, 8, 1, 4].some(isBiggerThan10); // true

Syntax

arr.some(callback[, thisArg])

Parameter

callback
Funktion die jedes Element überprüft, nimmt drei Argumente entgegen:
currentValue
Das aktuell zu verarbeitende Element des Arrays.
index
Der Index des aktuell zu verarbeitenden Elementes im Array.
array
Die array Instanz auf welcher die  some() Methode aufgerufen wurde.
thisArg
Optional. Wert der über das this Schüsselwort innerhalb von callback verfügbar ist.

Rückgabewert

true wenn die callback Methode ein positives (truthy) Ergebnis für eines der Elemente im array ermittelt hat; Andernfalls, false.

Beschreibung

some() führt die callback Funktion einmalig für jedes Element innerhalb des Arrays aus. Der Durchlauf des Arrays wird allerdings unverzüglich beendet sobald ein Aufruf der callback Methode einen positiven Wert (truthy - Ein Wert der durch eine Konvertierung zu boolean true ergibt) zürückgibt. Falls ein entsprechendes Element gefunden wurde, gibt die  some() Methode unmittelbar true zurück. In anderen Fällen liefert some() false. Der callback wird nur für Elemente des Arrays ausgeführt, die einen zugewiesenen Wert haben. Für undefinierte oder gelöschte Elemente des Arrays wird der callback nicht ausgeführt.

callback wird mit drei Argumenten aufgerufen: Dem Wert des Elementes, dem Index des Elementes und dem zugrundeliegenden Array.

Falls ein thisArg Parameter an die some() Methode übergeben wurde, wird dieser an die callback Funtion in Form des Wertes für this weitergereicht. Andernfalls wird der Wert  undefined weitergegeben. Der tatsächliche Wert von this (innerhalb der callback Methode) wird entsprechend der generellen Regeln zur Belegung des this Schlüsselwortes innerhalb von Funktionen gesetzt.

some() verändert nicht das Array auf dem die Methode aufgerufen wurde.

Die zu betrachtenden Elemente durch die some() Methode werden vor dem ersten Aufruf der  callback Methode identifizier. Elemente die nach dem Aufruf von some() zum Array hinzugefügt wurden, werden nicht betrachtet;  callback wird nicht für diese Elemente ausgeführt. Wird ein Elemente aus dem Array gelöscht, wird es nicht betrachtet.
Wenn ein existierendes, noch nicht betrachtetes Element des Arrays durch callback verändert wird, wird bei der Betrachtung des geänderten Elementes der Wert verwendet der zum Zeitpunkt des Eintritts in die some() Methode am korrespondierenden Index vorhanden war.

Beispiele

Werte eines Arrays überprüfen

Die folgenden Beispiele prüfen ob es ein Element größer als 10 im Array gibt.

function isBiggerThan10(element, index, array) {
  return element > 10;
}

[2, 5, 8, 1, 4].some(isBiggerThan10);  // false
[12, 5, 8, 1, 4].some(isBiggerThan10); // true

Werte eines Arrays mit arrow functions überprüfen

Arrow functions ermöglichen eine kürzere Schreibweise für die gleiche Logik.

[2, 5, 8, 1, 4].some(x => x > 10);  // false
[12, 5, 8, 1, 4].some(x => x > 10); // true

Prüfen ob ein Element in einem Array existiert

Das folgende Beispiel gibt true zurück, wenn das Element im Array existiert:

var fruits = ['apple', 'banana', 'mango', 'guava'];

function checkAvailability(arr, val) {
  return arr.some(function(arrVal) {
    return val === arrVal;
  });
}

checkAvailability(fruits, 'kela');   // false
checkAvailability(fruits, 'banana'); // true

Durch eine arrow function prüfen ob ein Element in einem Array existiert

var fruits = ['apple', 'banana', 'mango', 'guava'];

function checkAvailability(arr, val) {
  return arr.some(arrVal => val === arrVal);
}

checkAvailability(fruits, 'kela');   // false
checkAvailability(fruits, 'banana'); // true

Jeden Wert in einen boolschen Wert konvertieren

var TRUTHY_VALUES = [true, 'true', 1];

function getBoolean(a) {
  'use strict';
  
  var value = a;
   
  if (typeof value === 'string') { 
    value = value.toLowerCase().trim();
  }

  return TRUTHY_VALUES.some(function(t) {
    return t === value;
  });
}

getBoolean(false);   // false
getBoolean('false'); // false
getBoolean(1);       // true
getBoolean('true');  // true

Polyfill

some() wurde im Rahmen des ECMA-262 Standards in der fünften Edition hinzugefügt. Daher kann es sein, dass es nicht in sämtlichen Implementierungen des Standards enthalten ist. Falls die Laufzeitumgebung die some Methode nicht anbietet, können Sie dieses Problem allerdings selbst beheben. Fügen Sie den folgenden Quellcode vor Ihren eigenen Skripten ein, wodurch Sie die some() Methode in Ihrem Programmcode verwenden können. Die nachfolgende Implementierung ist eine exakte Abdeckung der ECMA-262 Spezifikation in dr fünfsten Edition, basierend auf der Annahme dass Object und TypeError Originalwerte aufweisen und dass fun.call den Originalwert von Function.prototype.call() liefert.

// Production steps of ECMA-262, Edition 5, 15.4.4.17
// Reference: http://es5.github.io/#x15.4.4.17
if (!Array.prototype.some) {
  Array.prototype.some = function(fun/*, thisArg*/) {
    'use strict';

    if (this == null) {
      throw new TypeError('Array.prototype.some called on null or undefined');
    }

    if (typeof fun !== 'function') {
      throw new TypeError();
    }

    var t = Object(this);
    var len = t.length >>> 0;

    var thisArg = arguments.length >= 2 ? arguments[1] : void 0;
    for (var i = 0; i < len; i++) {
      if (i in t && fun.call(thisArg, t[i], i, t)) {
        return true;
      }
    }

    return false;
  };
}

Spezifikation

Spezifikation Status Kommentar
ECMAScript 5.1 (ECMA-262)
Die Definition von 'Array.prototype.some' in dieser Spezifikation.
Standard Initiale Definition. Implementiert in JavaScript 1.6.
ECMAScript 2015 (6th Edition, ECMA-262)
Die Definition von 'Array.prototype.some' in dieser Spezifikation.
Standard  
ECMAScript Latest Draft (ECMA-262)
Die Definition von 'Array.prototype.some' in dieser Spezifikation.
Entwurf  

Browserkompatibilität

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basis Unterstützung (Ja) 1.5 (1.8) 9 (Ja) (Ja)
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basis Unterstützung (Ja) (Ja) 1.0 (1.8) (Ja) (Ja) (Ja)

 

Siehe auch

Schlagwörter des Dokuments und Mitwirkende

 Mitwirkende an dieser Seite: MaxKr, StevenS77, ThorstenHans
 Zuletzt aktualisiert von: MaxKr,