前言
关于es6新特性,小伙伴们都大概了解知道let,const,模板字符串,箭头函数,对象和数组解构等等,昨天在复习的时候,想起了之前面试的一家公司的面试题:你如何将页面上的元素节点去重?今天,分享给小伙伴的是用ES6实现去重,一起来看看吧。相关知识点
- set:一种数据结构,用来去重。
- ...:扩展运算符,实现数组的浅拷贝。
- Array.from():将一个类数组对象或者可遍历对象转换成一个真正的数组。
实现
var arr = document.getElementsByTagName("*"); //获取页面中所有元素节点
console.log('所有元素节点',arr);
var newArr = [...arr].map(v=>v.localName); //将元素节点浅拷贝到数组newArr里
console.log('拷贝到数组里的元素',newArr);
var endArr = new Set(newArr); //将元素节点去重
console.log('去重之后的元素',endArr);
var zhong = Array.from(endArr); //去重之后的元素节点放到数组里边
console.log('最后结果',zhong);
这段代码就实现了在数组中将元素节点去重,大家可以把这段代码粘贴到自己写的页面script里边,也可以打开F12控制台粘贴到控制台里边,就可以看到实现效果。如果上边代码理解清楚了,也可以直接写成下边的这样,更简洁。
var srr = Array.from(new Set([...document.getElementsByTagName('*')].map(v=>v.localName)));
console.log('最后结果',srr);