1.请将一个二维数组扁平化处理(2种方法)
var arr = [1, 2, 3, [4, 3,2], 5, [5, 9, 10], 7];
1)第一种
function func(user){
// let arr1 = [];
// user.forEach((item)=>{
// Array.isArray(item)==false?arr1.push(item):arr1 = arr1.concat(func(item));
// })
// arr = arr1;
// return arr;
// }
// func(arr);
// console.log(arr);
2)第二种
function func(user){
// let arr1 = [];
// for(var i=0;i<user.length;i++){
// if(Array.isArray(user[i])==false){
// arr1.push(user[i]);
// }else {
// arr1 = arr1.concat(func(user[i]));
// }
// }
// arr = arr1;
// return arr;
// }
// func(arr);
// console.log(arr);
2.请写出防抖的2种方式
var num = 1;
let times;
先执行
content.onmousemove = function (){
// let obj = times;
// clearTimeout(times);
// times = setTimeout(()=>{
// times = null;
// },1000)
// if(!obj){
// console.log(typeof !obj);
// content.innerHTML = num++;
// }
// };
后执行
content.onmousemove = function (){
// clearTimeout(times);
// times = setTimeout(()=>{
// content.innerHTML = num++;
// },1000)
// };
3.请写出节流的2种方式
延时器
var time;
// content.onmousemove = function(){
// if(!time){
// time = setTimeout(()=>{
// time = null;
// content.innerHTML = num++;
// },1000)
// }
//时间戳
// var content = document.getElementById(“content”);
// var num = 1;
// var timeNew = 0;
// content.onmousemove = function(){
// var timeOld = Date.now();
// if(timeOld-timeNew>1000){
// timeNew = timeOld;
// content.innerHTML = num++;
// }
// }
4.es6中新增的循环对象的方法有哪些
Object.keys() 静态方法返回一个由给定对象自身的可枚举的字符串键属性名组成的数组。
Object.values() 静态方法返回一个给定对象的自有可枚举字符串键属性值组成的数组。
Object.getOwnPropertyNames() 静态方法返回一个数组,其包含给定对象中所有自有属性
// (包括不可枚举属性,但不包括使用 symbol 值作为名称的属性)
Object.getOwnPropertySymbols() 静态方法返回一个包含给定对象所有自有 Symbol