扎实基础篇-----用ES6实现页面中所有元素节点的去重

1,248 阅读2分钟

前言

关于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);

小结

这是针对之前面试中遇到的问题做的一个思考与回顾,希望能帮助到小伙伴们。若在阅读过程中发现有什么错误或问题欢迎指正和提出,一起交流,一起进步; 关于ES6中添加的新特性如果有不懂不熟悉的小伙伴, 推荐大家阅读阮一峰老师的 [es6](http://es6.ruanyifeng.com/) 讲解很详细呢,一起加油~[jks](http://es6.ruanyifeng.com/)