JS内置可迭代对象有哪些?完整解析,需要具体代码示例
在JavaScript中,可迭代对象指的是可以使用迭代器访问其元素的对象。在ES6之后,许多内置的数据结构都实现了可迭代协议,可以通过for...of循环或使用迭代器对象进行遍历。
以下是JS中常见的可迭代对象:
数组是最常见的可迭代对象。我们可以使用for...of循环或使用迭代器对象iterator来遍历数组中的元素。下面是一个数组对象的示例:
立即学习“Java免费学习笔记(深入)”;
const arr = [1, 2, 3, 4]; // 使用for...of循环遍历 for (let item of arr) { console.log(item); } // 使用迭代器对象遍历 const iterator = arr[Symbol.iterator](); let result = iterator.next(); while (!result.done) { console.log(result.value); result = iterator.next(); }
字符串也是可迭代对象,我们可以直接使用for...of循环或使用迭代器对象来遍历字符串中的每个字符。
const str = 'Hello World'; // 使用for...of循环遍历 for (let char of str) { console.log(char); } // 使用迭代器对象遍历 const iterator = str[Symbol.iterator](); let result = iterator.next(); while (!result.done) { console.log(result.value); result = iterator.next(); }
Arguments对象是一个类数组对象,它包含了函数调用时传递给函数的参数列表。它也是可迭代对象,因此可以使用for...of循环来遍历其中的每个参数。
function sum() { for (let arg of arguments) { console.log(arg); } } sum(null, 2, 3, 4);
Set和Map是ES6引入的新数据结构,它们也是可迭代对象,可以使用for...of循环或使用迭代器对象遍历其元素。
const set = new Set([1, 2, 3]); // 使用for...of循环遍历Set中的元素 for (let item of set) { console.log(item); } // 使用迭代器对象遍历Set中的元素 const iterator = set[Symbol.iterator](); let result = iterator.next(); while (!result.done) { console.log(result.value); result = iterator.next(); } const map = new Map([ ['name', 'John'], ['age', 25] ]); // 使用for...of循环遍历Map中的元素 for (let [key, value] of map) { console.log(key, value); } // 使用迭代器对象遍历Map中的元素 const iterator = map[Symbol.iterator](); let result = iterator.next(); while (!result.done) { console.log(result.value); result = iterator.next(); }
Generator是一种特殊的函数,可以通过yield关键字实现暂停和恢复执行过程。Generator对象也是可迭代对象,可以使用for...of循环或使用迭代器对象进行遍历。
function* generatorFunc() { yield 1; yield 2; yield 3; } const generator = generatorFunc(); // 使用for...of循环遍历Generator中的元素 for (let item of generator) { console.log(item); } // 使用迭代器对象遍历Generator中的元素 const iterator = generator[Symbol.iterator](); let result = iterator.next(); while (!result.done) { console.log(result.value); result = iterator.next(); }
总结:以上是JavaScript中常见的内置可迭代对象,它们都可以通过for...of循环或使用迭代器对象进行遍历。通过了解这些可迭代对象,我们可以更好地使用它们提供的特性和功能。