javascript常问面试题:获取浏览器页面有多少个标签数量

本文介绍了两种JavaScript方法来获取浏览器页面的标签数量,包括使用ES6的Set特性。同时,讨论了如何判断浏览器是否支持ES6 Set以及在遇到ES6不兼容IE浏览器的问题时,可以通过引入babel-polyfill来解决。

第一种: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.com/#docs/set-map#Set

疑问:如何解决ES6不兼容IE浏览器的问题

1、安装插件babel-polyfill

npm install --save babel-polyfill

2、使用

//在项目的src目录下找到入口文件,添加代码:
import 'babel-polyfill';

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值