TypedArray.prototype[@@iterator]()

TypedArray 实例的 [@@iterator]() 方法实现了 可迭代协议,并允许大多数需要可迭代的语法使用类型化数组,例如 扩展语法for...of 循环。它返回一个 数组迭代器对象,该 数组迭代器对象 产生类型化数组中每个索引的值。

¥The [@@iterator]() method of TypedArray instances implements the iterable protocol and allows typed arrays to be consumed by most syntaxes expecting iterables, such as the spread syntax and for...of loops. It returns an array iterator object that yields the value of each index in the typed array.

该属性的初始值与 TypedArray.prototype.values 属性的初始值是相同的函数对象。

¥The initial value of this property is the same function object as the initial value of the TypedArray.prototype.values property.

Try it

语法

¥Syntax

js
typedArray[Symbol.iterator]()

参数

¥Parameters

没有任何。

¥None.

返回值

¥Return value

TypedArray.prototype.values() 返回值相同:一个新的 可迭代的迭代器对象,它生成类型化数组中每个索引的值。

¥The same return value as TypedArray.prototype.values(): a new iterable iterator object that yields the value of each index in the typed array.

示例

¥Examples

使用 for...of 循环进行迭代

¥Iteration using for...of loop

请注意,你很少需要直接调用此方法。@@iterator 方法的存在使得类型化数组成为 iterable,像 for...of 循环这样的迭代语法会自动调用该方法来获取要循环的迭代器。

¥Note that you seldom need to call this method directly. The existence of the @@iterator method makes typed arrays iterable, and iterating syntaxes like the for...of loop automatically call this method to obtain the iterator to loop over.

js
const arr = new Uint8Array([10, 20, 30, 40, 50]);
for (const n of arr) {
  console.log(n);
}

手动滚动迭代器

¥Manually hand-rolling the iterator

你仍然可以手动调用返回的迭代器对象的 next() 方法,以实现对迭代过程的最大控制。

¥You may still manually call the next() method of the returned iterator object to achieve maximum control over the iteration process.

js
const arr = new Uint8Array([10, 20, 30, 40, 50]);
const arrIter = arr[Symbol.iterator]();
console.log(arrIter.next().value); // 10
console.log(arrIter.next().value); // 20
console.log(arrIter.next().value); // 30
console.log(arrIter.next().value); // 40
console.log(arrIter.next().value); // 50

规范

Specification
ECMAScript Language Specification
# sec-%typedarray%.prototype-@@iterator

¥Specifications

浏览器兼容性

BCD tables only load in the browser

¥Browser compatibility

也可以看看