Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
Array.prototype.some()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since Juli 2015.
Diesome()-Methode vonArray-Instanzen gibttrue zurück, wenn sie ein Element im Array findet, das die bereitgestellte Testfunktion erfüllt. Andernfalls gibt siefalse zurück.
In diesem Artikel
Probieren Sie es aus
const array = [1, 2, 3, 4, 5];// Checks whether an element is evenconst even = (element) => element % 2 === 0;console.log(array.some(even));// Expected output: trueSyntax
some(callbackFn)some(callbackFn, thisArg)Parameter
callbackFnEine Funktion, die für jedes Element im Array ausgeführt werden soll. Sie sollte einentruthy Wert zurückgeben, um anzuzeigen, dass das Element den Test besteht, und einenfalsy Wert andernfalls. Die Funktion wird mit den folgenden Argumenten aufgerufen:
thisArgOptionalEin Wert, der als
thisverwendet werden soll, wenncallbackFnausgeführt wird. Sieheiterative Methoden.
Rückgabewert
false, es sei denn,callbackFn gibt für ein Array-Element einentruthy Wert zurück, in welchem Falltrue sofort zurückgegeben wird.
Beschreibung
Diesome()-Methode ist eineiterative Methode. Sie ruft eine bereitgestelltecallbackFn-Funktion einmal für jedes Element in einem Array auf, biscallbackFn einentruthy Wert zurückgibt. Wenn ein solches Element gefunden wird, gibtsome() soforttrue zurück und stoppt die Iteration durch das Array. Andernfalls, wenncallbackFn für alle Elemente einenfalsy Wert zurückgibt, gibtsome()false zurück. Lesen Sie den Abschnitt überiterative Methoden, um mehr darüber zu erfahren, wie diese Methoden im Allgemeinen funktionieren.
some() wirkt wie der "es gibt"-Quantor in der Mathematik. Insbesondere für ein leeres Array gibt es für jede Bedingungfalse zurück.
callbackFn wird nur für Array-Indizes aufgerufen, denen Werte zugewiesen sind. Es wird nicht für leere Plätze indünn besetzten Arrays aufgerufen.
some() verändert das Array nicht, auf dem es aufgerufen wird, aber die alscallbackFn bereitgestellte Funktion kann es. Beachten Sie jedoch, dass die Länge des Arraysvor dem ersten Aufruf voncallbackFn gespeichert wird. Daher:
callbackFnwird keine Elemente besuchen, die über die ursprüngliche Länge des Arrays hinaus hinzugefügt wurden, als der Aufruf vonsome()begann.- Änderungen an bereits besuchten Indizes verursachen nicht, dass
callbackFnerneut für sie aufgerufen wird. - Wenn ein vorhandenes, noch nicht besuchtes Element des Arrays von
callbackFngeändert wird, wird sein Wert, der an diecallbackFnübergeben wird, der Wert zu dem Zeitpunkt sein, an dem dieses Element besucht wird.Gelöschte Elemente werden nicht besucht.
Warnung:Gleichzeitige Änderungen der oben beschriebenen Art führen häufig zu schwer verständlichem Code und sollten im Allgemeinen vermieden werden (außer in speziellen Fällen).
Diesome()-Methode istgenerisch. Sie erwartet nur, dass derthis-Wert einelength-Eigenschaft und integer-schlüsselige Eigenschaften hat.
Beispiele
>Testen von Array-Elementwerten
Das folgende Beispiel prüft, ob irgendein Element im Array größer als 10 ist.
function isBiggerThan10(element, index, array) { return element > 10;}[2, 5, 8, 1, 4].some(isBiggerThan10); // false[12, 5, 8, 1, 4].some(isBiggerThan10); // trueTesten von Array-Elementen mit Pfeilfunktionen
Pfeilfunktionen bieten eine kürzere Syntax für denselben Test.
[2, 5, 8, 1, 4].some((x) => x > 10); // false[12, 5, 8, 1, 4].some((x) => x > 10); // truePrüfen, ob ein Wert in einem Array existiert
Um die Funktion derincludes()-Methode nachzubilden, gibt diese benutzerdefinierte Funktiontrue zurück, wenn das Element im Array existiert:
const fruits = ["apple", "banana", "mango", "guava"];function checkAvailability(arr, val) { return arr.some((arrVal) => val === arrVal);}checkAvailability(fruits, "grapefruit"); // falsecheckAvailability(fruits, "banana"); // trueIrgendwelche Werte in Boolean konvertieren
const TRUTHY_VALUES = [true, "true", 1];function getBoolean(value) { if (typeof value === "string") { value = value.toLowerCase().trim(); } return TRUTHY_VALUES.some((t) => t === value);}getBoolean(false); // falsegetBoolean("false"); // falsegetBoolean(1); // truegetBoolean("true"); // trueNutzung des dritten Arguments von callbackFn
Dasarray-Argument ist nützlich, wenn Sie auf ein anderes Element im Array zugreifen möchten, insbesondere wenn Sie keine existierende Variable haben, die auf das Array verweist. Das folgende Beispiel verwendet zuerstfilter(), um die positiven Werte zu extrahieren, und dannsome(), um zu prüfen, ob das Array streng zunehmend ist.
const numbers = [3, -1, 1, 4, 1, 5];const isIncreasing = !numbers .filter((num) => num > 0) .some((num, idx, arr) => { // Without the arr argument, there's no way to easily access the // intermediate array without saving it to a variable. if (idx === 0) return false; return num <= arr[idx - 1]; });console.log(isIncreasing); // falseNutzung von some() auf dünn besetzten Arrays
some() führt seine Prüfungsfunktion nicht auf leeren Plätzen aus.
console.log([1, , 3].some((x) => x === undefined)); // falseconsole.log([1, , 1].some((x) => x !== 1)); // falseconsole.log([1, undefined, 1].some((x) => x !== 1)); // trueAufruf von some() auf Nicht-Array-Objekten
Diesome()-Methode liest dielength-Eigenschaft vonthis und greift dann auf jede Eigenschaft zu, deren Schlüssel eine nichtnegative Ganzzahl ist, die kleiner alslength ist, bis alle zugegriffen wurden odercallbackFntrue zurückgibt.
const arrayLike = { length: 3, 0: "a", 1: "b", 2: "c", 3: 3, // ignored by some() since length is 3};console.log(Array.prototype.some.call(arrayLike, (x) => typeof x === "number"));// falseSpezifikationen
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-array.prototype.some> |