第一种:set (ES6新特新)
new Set(document.getElementsByTagName('*')).size
image
第二种:遍历去重
function unique(arr){
var newArr = [];
for(var i = 0; i < arr.length; i++){
for(var j = i+1; j < arr.length; j++){
if(arr[i] == arr[j]){
++i;
}
}
newArr.push(arr[i]);
}
return newArr;
}
var arr = [1,2,2,3,5,3,6,5];
var newArr = unique(arr);
console.log(newArr);
image
Set(ES6的新特性):
或者 可以这么写
const s = new Set();
[2,3,4,5,7,4,2,1,2].forEach(x => s.add(x));
console.log(s.size());//去重打印
疑问:如何判断浏览器是否支持ES6?
可以在浏览器里面试试如下函数
()=>{}//箭头函数,如果不报错,那就是 支持的。
//或者 如果没报错说明 支持 Set函数 支持 ES6
const s = new Set();
Set的其他用法:
// 例一
const set =
new Set([1, 2, 3, 4, 4]);
[...set]// [1, 2, 3, 4]
// 例二
const items =
new Set([1, 2, 3, 4, 5, 5, 5, 5]);
items.size // 5
// 例三
const set =
new Set(document.querySelectorAll('div'));
set.size // 56
// 类似于
const set = new Set();
document
.querySelectorAll('div')
.forEach(div => set.add(div));
set.size // 56
判断值否存在:
// Set的写法
const properties = new Set();
properties.add('width');
properties.add('height');
if (properties.has(someName)) {
// do something
}
数组去重:
const items =
new Set([1, 2, 3, 4, 5, 5, 3]);
const array = Array.from(items);
function dedupe(array) {
return Array.from(new Set(array));
}
dedupe([1, 1, 2, 3]) // [1, 2, 3]```
Array.from:就是将一个类数组对象或者可遍历对象转换成一个真正的数组。
Array.from:就是将一个类数组对象或者可遍历对象转换成一个真正的数组
let arrayLike = {
0: 'tom',
1: '65',
2: '男',
3: ['jane','john','Mary'],
'length': 4
}
let arr = Array.from(arrayLike)
console.log(arr)
// ['tom','65','男',['jane','john','Mary']]
更多set用法:
http://es6.ruanyifeng/#docs/set-map#Set
疑问:如何解决ES6不兼容IE浏览器的问题
1、安装插件babel-polyfill
npm install --save babel-polyfill
2、使用
//在项目的src目录下找到入口文件,添加代码:
import 'babel-polyfill';
更多推荐
javascript常问面试题:获取浏览器页面有多少个标签数量
发布评论