Dieser Inhalt wurde automatisch aus dem Englischen รผbersetzt, und kann Fehler enthalten. Erfahre mehr รผber dieses Experiment.

View in English Always switch to English

Array.prototype.values()

Baseline Widely available

This feature is well established and works across many devices and browser versions. Itโ€™s been available across browsers since โจMai 2018โฉ.

Die values()-Methode von Array-Instanzen gibt ein neues Array-Iterator-Objekt zurรผck, das den Wert jedes Elements im Array durchlรคuft.

Probieren Sie es aus

const array = ["a", "b", "c"];
const iterator = array.values();

for (const value of iterator) {
  console.log(value);
}

// Expected output: "a"
// Expected output: "b"
// Expected output: "c"

Syntax

js
values()

Parameter

Keine.

Rรผckgabewert

Ein neues iterierbares Iterator-Objekt.

Beschreibung

Array.prototype.values() ist die Standardimplementierung von Array.prototype[Symbol.iterator]().

js
Array.prototype.values === Array.prototype[Symbol.iterator]; // true

Bei der Verwendung auf sparse arrays durchlรคuft die values()-Methode leere Slots, als ob sie den Wert undefined haben.

Die values()-Methode ist generisch. Sie erwartet nur, dass der this-Wert eine length-Eigenschaft und Schlรผssel mit ganzzahligen Werten besitzt.

Beispiele

Iteration mit for...of-Schleife

Da values() ein iterierbares Iterator-Objekt zurรผckgibt, kรถnnen Sie eine for...of-Schleife verwenden, um darรผber zu iterieren.

js
const arr = ["a", "b", "c", "d", "e"];
const iterator = arr.values();

for (const letter of iterator) {
  console.log(letter);
} // "a" "b" "c" "d" "e"

Iteration mit next()

Da der Rรผckgabewert auch ein Iterator ist, kรถnnen Sie direkt die next()-Methode aufrufen.

js
const arr = ["a", "b", "c", "d", "e"];
const iterator = arr.values();
iterator.next(); // { value: "a", done: false }
iterator.next(); // { value: "b", done: false }
iterator.next(); // { value: "c", done: false }
iterator.next(); // { value: "d", done: false }
iterator.next(); // { value: "e", done: false }
iterator.next(); // { value: undefined, done: true }
console.log(iterator.next().value); // undefined

Wiederverwendung des Iterators

Warnung: Das Array-Iterator-Objekt sollte nur einmal verwendet werden. Verwenden Sie es nicht wieder.

Der aus values() zurรผckgegebene Iterator ist nicht wiederverwendbar. Wenn next().done = true oder currentIndex > length, endet die for...of-Schleife, und ein weiteres Iterieren hat keinen Effekt.

js
const arr = ["a", "b", "c", "d", "e"];
const values = arr.values();
for (const letter of values) {
  console.log(letter);
}
// "a" "b" "c" "d" "e"
for (const letter of values) {
  console.log(letter);
}
// undefined

Wenn Sie eine break-Anweisung verwenden, um die Iteration vorzeitig zu beenden, kann der Iterator von der aktuellen Position aus fortgesetzt werden, wenn weiter iteriert wird.

js
const arr = ["a", "b", "c", "d", "e"];
const values = arr.values();
for (const letter of values) {
  console.log(letter);
  if (letter === "b") {
    break;
  }
}
// "a" "b"

for (const letter of values) {
  console.log(letter);
}
// "c" "d" "e"

Verรคnderungen wรคhrend der Iteration

Es werden keine Werte im aus values() zurรผckgegebenen Array-Iterator-Objekt gespeichert; stattdessen speichert es die Adresse des Arrays, das bei seiner Erstellung verwendet wurde, und liest den aktuell besuchten Index bei jeder Iteration. Daher hรคngt die Ausgabe der Iteration vom Wert ab, der zu diesem Zeitpunkt an diesem Index gespeichert ist. Wenn sich die Werte im Array รคndern, รคndern sich die Werte des Array-Iterator-Objekts ebenfalls.

js
const arr = ["a", "b", "c", "d", "e"];
const iterator = arr.values();
console.log(iterator); // Array Iterator { }
console.log(iterator.next().value); // "a"
arr[1] = "n";
console.log(iterator.next().value); // "n"

Im Gegensatz zu iterierenden Methoden speichert das Array-Iterator-Objekt nicht die Lรคnge des Arrays zum Zeitpunkt seiner Erstellung, sondern liest sie bei jeder Iteration einmal. Daher, wenn das Array wรคhrend der Iteration wรคchst, besucht der Iterator auch die neuen Elemente. Dies kann zu Endlosschleifen fรผhren.

js
const arr = [1, 2, 3];
for (const e of arr) {
  arr.push(e * 10);
}
// RangeError: invalid array length

Iteration von sparse Arrays

values() wird leere Slots besuchen, als ob sie undefined sind.

js
for (const element of [, "a"].values()) {
  console.log(element);
}
// undefined
// 'a'

Aufrufen von values() auf Nicht-Array-Objekten

Die values()-Methode liest die length-Eigenschaft von this aus und greift dann auf jede Eigenschaft zu, deren Schlรผssel eine nicht-negative Ganzzahl kleiner als length ist.

js
const arrayLike = {
  length: 3,
  0: "a",
  1: "b",
  2: "c",
  3: "d", // ignored by values() since length is 3
};
for (const entry of Array.prototype.values.call(arrayLike)) {
  console.log(entry);
}
// a
// b
// c

Spezifikationen

Specification
ECMAScriptยฎ 2026 Language Specification
# sec-array.prototype.values

Browser-Kompatibilitรคt

Siehe auch