目录
1)判断数组单调
nums.every((x, i) => i === 0 || x >= nums[i - 1]) //递增
//要排除第一个元素
2.清空数组的三种方法
1)arr.length = 0
2)arr.splice(0)
3)arr = []
3.数组扁平化的三种实现
1)递归
function flatten(arr){
var res = []
for(var i = 0,len=arr.length;i<len;i++){
if(Array.isArray(arr[i])){
res = res.concat(flatten(arr[i]))
}else{
res.push(arr[i])
}
}
return res
}
2)reduce
function flatten(arr){
return arr.reduce((pre,next)=>{
return pre.concat(Array.isArray(next)?flatten(next:next))
},0)
}
3)es6 flat()
arr.flat()
4.求两个数组之间的交集
function intersectSet(arr1,arr2){
return [...new Set(arr1)].filter(item=>arr2.includes(item))
}
5.for in for of for之间的比较
1)for和forEach哪个更快?
a.for更快
b.forEach每次都要创建一个函数调用,for不会
c.函数需要独立的作用域,会有额外开销
2)for in for of区别
a. for in 遍历得到key for of得到value
b.适用于不同的数据类型:遍历对象(for in) 遍历Map,Set(for of) 遍历generator(for of)
6.获取当前日期 xxxx-xx-xx格式
JSON.stringify(new Date()).substr(1,10)
7.制造一个1000条数据的数组
1)new Array(1000).fill(null).map((v,i)=>({name: `name${i+1}`}))
2) Array.from({length:1000},{name: `name${i+1}`})
8.写一个只执行一次的函数
function once(fn){
let done = false
return function(){
done = true;
return fn.apply(this,arguments)
}
}
let pay = once(function(money){
console.log(`支付了${money}`)
})
pay(5) //只会执行一次
pay(5)