目录
迭代器实现了Iterator接口,只要实现了Iterator就可以使用for-of遍历
使用双层for循环+splice()进行数组去重(删除数组中重复的元素)
利用indexOf()+push()进行数组去重(在新数组中添加新数组查找不到的元素)
利用includes()+push()进行数组去重(在新数组中添加新数组不包含的元素)
利用set进行数组去重(set成员唯一的,数组转set再转数组)
迭代器Iterator
迭代器(Iterator)是一种接口,为各种不同的数据结构提供统一的访问机制。任何数据结构只要部署Iterator接口,就可以完成遍历操作(即依次处理该数据结构的所有成员)。
Iterator 的作用
一是为各种数据结构,提供一个统一的、简便的访问接口;
二是使得数据结构的成员能够按某种次序排列;
三是ES6创造了一种新的遍历命令for...of循环,Iterator接口主要供for...of消费。
原生具备 Iterator 接口的数据结构
Array、Map、Set、String、TypedArray、arguments、NodeList
// 数组的实例方法 let arr = ['hello', 12, true, null, undefined]; // keys values entries 当前变量是迭代器对象 let keys = arr.keys(); let values = arr.values(); let entries = arr.entries(); console.log(keys,values,entries,'数组'); |
|
Iterator 的遍历过程
1、创建一个指针对象,指向当前数据结构的起始位置。即遍历器对象本质上就是一个指针对象。
2、第一次调用指针对象的next方法,可以将指针指向数据结构的第一个成员。
3、第二次调用指针对象的next方法,指针就指向数据结构的第二个成员。
4、不断调用指针对象的next方法,直到它指向数据结构的结束位置。
迭代器实现了Iterator接口,只要实现了Iterator就可以使用for-of遍历
//数组的遍历 let arr = ['hello', 12, true, null, undefined]; // keys values entries 当前变量是迭代器对象 let keys = arr.keys(); let values = arr.values(); let entries = arr.entries(); console.log(keys, values, entries, '数组'); // 只要实现了迭代器接口就可以使用for...of遍历 for (let key of keys) { // 返回的数组的索引 console.log(key,'数组的索引'); }; for (let value of values) { //数组的每一项元素 console.log(value,'数组的元素'); }; for (let entry of entries) { console.log(entry,'数组的键值对'); }; |
// 字符串的遍历 let str = 'world'; for (let key of str) { console.log(key); }; |
以前的遍历方法 | |
补充:字符串变数组 // 法一 let str = 'world'; let result=str.split(); console.log(result,'split()'); // 法二 let [...a] = str; console.log(a,'拓展运算符'); |
let str = 'world'; for (let key in str) { console.log(str[key],'法一:for...in'); }; for (let i = 0; i < str.length; i++) { console.log(str.charAt(i),'法二:charAt()'); } |