JS內(nèi)置可迭代對象有哪些?完整解析,需要具體代碼示例
在JavaScript中,可迭代對象指的是可以使用迭代器訪問其元素的對象。在ES6之后,許多內(nèi)置的數(shù)據(jù)結(jié)構(gòu)都實現(xiàn)了可迭代協(xié)議,可以通過for…of循環(huán)或使用迭代器對象進行遍歷。
以下是JS中常見的可迭代對象:
- 數(shù)組(Array):
數(shù)組是最常見的可迭代對象。我們可以使用for…of循環(huán)或使用迭代器對象iterator來遍歷數(shù)組中的元素。下面是一個數(shù)組對象的示例:
const arr = [1, 2, 3, 4]; // 使用for...of循環(huán)遍歷 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(); }
登錄后復制
- 字符串(String):
字符串也是可迭代對象,我們可以直接使用for…of循環(huán)或使用迭代器對象來遍歷字符串中的每個字符。
const str = 'Hello World'; // 使用for...of循環(huán)遍歷 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(); }
登錄后復制
- 類數(shù)組對象(Arguments):
Arguments對象是一個類數(shù)組對象,它包含了函數(shù)調(diào)用時傳遞給函數(shù)的參數(shù)列表。它也是可迭代對象,因此可以使用for…of循環(huán)來遍歷其中的每個參數(shù)。
function sum() { for (let arg of arguments) { console.log(arg); } } sum(1, 2, 3, 4);
登錄后復制
- Set和Map:
Set和Map是ES6引入的新數(shù)據(jù)結(jié)構(gòu),它們也是可迭代對象,可以使用for…of循環(huán)或使用迭代器對象遍歷其元素。
const set = new Set([1, 2, 3]); // 使用for...of循環(huán)遍歷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循環(huán)遍歷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對象:
Generator是一種特殊的函數(shù),可以通過yield關(guān)鍵字實現(xiàn)暫停和恢復執(zhí)行過程。Generator對象也是可迭代對象,可以使用for…of循環(huán)或使用迭代器對象進行遍歷。
function* generatorFunc() { yield 1; yield 2; yield 3; } const generator = generatorFunc(); // 使用for...of循環(huán)遍歷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(); }
登錄后復制
總結(jié):以上是JavaScript中常見的內(nèi)置可迭代對象,它們都可以通過for…of循環(huán)或使用迭代器對象進行遍歷。通過了解這些可迭代對象,我們可以更好地使用它們提供的特性和功能。