[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Array/values [Back]  [Original]

Array.prototype.values() - JavaScript | MDN

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 Weitgehend verfgbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Gerten und in vielen Browserversionen. Sie ist seit Mai 2018 browserbergreifend verfgbar.

Die values() Methode von Array Instanzen gibt ein neues Array-Iterator-Objekt zurck, das den Wert jedes Elements im Array durchluft.

In diesem Artikel

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.

Rckgabewert

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

Wenn sie auf sparsely arrays verwendet wird, durchluft die values()-Methode leere Positionen, als htten sie den Wert undefined.

Die values() Methode ist generisch. Sie erwartet nur, dass der this-Wert eine length-Eigenschaft und integer-geschlsselte Eigenschaften hat.

Beispiele

Iteration mit einer for...of Schleife

Da values() einen iterierbaren Iterator zurckgibt, knnen Sie eine for...of Schleife verwenden, um ihn zu durchlaufen.

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 Rckgabewert ebenfalls ein Iterator ist, knnen Sie direkt dessen 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 Iterables

Warnung: Das Array-Iterator-Objekt sollte ein Einweg-Objekt sein. Es sollte nicht wiederverwendet werden.

Das von values() zurckgegebene Iterable ist nicht wiederverwendbar. Wenn next().done = true oder currentIndex > length, endet die for...of Schleife, und ein weiteres Durchlaufen 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);
}
// No output

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

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"

Mutationen whrend der Iteration

Im Array-Iterator-Objekt, das von values() zurckgegeben wird, sind keine Werte gespeichert; stattdessen speichert es die Adresse des Arrays, das bei seiner Erstellung verwendet wurde, und liest den aktuell besuchten Index bei jeder Iteration. Daher hngt seine Iterationsausgabe von dem Wert ab, der zu diesem Zeitpunkt an diesem Index gespeichert ist. ndern sich die Werte im Array, ndern sich auch die Werte des Array-Iterator-Objekts.

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 den iterativen Methoden speichert das Array-Iterator-Objekt die Lnge des Arrays nicht zum Zeitpunkt seiner Erstellung, sondern liest sie bei jeder Iteration einmal. Daher wird der Iterator, wenn das Array whrend der Iteration wchst, auch die neuen Elemente besuchen. Dies kann zu Endlosschleifen fhren.

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 wren.

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

Aufrufen von values() fr Objekte, die keine Arrays sind

Die values()-Methode liest die length-Eigenschaft von this und greift dann auf jede Eigenschaft zu, deren Schlssel ein nicht-negativer Integer ist, der 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

Spezifikation
ECMAScript 2027 LanguageSpecification
# sec-array.prototype.values

Browser-Kompatibilitt

Siehe auch


Web Proxy Viewer  |  New URL  |  Original Page