數組
//map
Array.prototype._map = function(fn){
return this.reduce((result,item)=>[...result,item],[])
}
//filter
Array.prototype._filter = function(fn){
return this.reduce((result,item)=> fn(item) ? [...result,item] : result,[])
}
//扁平化
function(arr){
arr = arr.toString().split(',').map(item=>{
return +item
})
return arr
}
//純數字時使用,若其中有其他類型,則需另外判斷或另行他法
//當然,最簡單的是 arr.flat(x)
var arr = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10];
編寫一個程序將數組扁平化去併除其中重複部分數據,最終得到一個升序且不重複的數組
Array.from(new Set(arr.toString().split(',').map(i => {
return +i
}))).sort((a, b) => {
return a - b
})
//統計個數
let arr = [0, 1, 1, 2, 2, 2];
let count = arr.reduce((t, c) => {
t[c] = t[c] ? ++ t[c] : 1;
return t;
}, {});
//克隆
let arr1 = [...arr]
//合併
let arr = [...arr1,...arr2] concat
//去重
let arr = [...new Set(arr1)]
//混淆
let arr = arr.slice().sort(()=> Math.random - .5)
//截斷
arr.length = 0
//交換
[a,b] = [b,a]
//濾空
arr.filter(Boolean)
累加
//arr.reduce((result,item)=> {return result+item})
Number
//取整:num = ~~1.69 num = 1.69 | 0 num = 1.69 >> 0
//補零:
let FillZero = (num, len) => num.toString().padStart(len, "0");
let num = FillZero(169, 5);
//時間戳:
+new Date() Date.now()
//取最大最小值:
Math.max() Math.min()
String
//千分位:
num.toLocaleString() //num必須是數字
//生成隨機ID:
let RandomId = len => Math.random().toString(36).substr(3, len);
Object
//深克隆
JSON.parse(JSON.stringify(obj1))
//當然這種不是最好的方式,對於Date Reg等是不適用的
//合併對象
let obj{...obj1,...obj2}
//對象字面量
const env = "prod";const link = {dev: 1,test: 2,prod: 3}[env];
//對象變量屬性
let flag = false
let obj = {a:0,b:1,[flag?'c':'d']:2}
//創建純空對象
Object.create(null)
//刪除無用對象
let obj = {a:1,b:2,c:3} let {d,...e} = obj // e = {b:2,c:3}
Function
//函數節流
function throttle(fn,interval){
let canRun = true
return function(){
if(!canRun)return;
canRun = false
setTimeout(
()=>{
fn.apply(this,arguments)
canRun = true
},interval)
}
}
//函數防抖
function debounce(fn,interval){
let timeout = null
return function(){
clearTimeout(timeout)
timeout = setTimeout(()=>{
fn.apply(this,arguments)
},interval)
}
}
//手寫一個sleep函數
var sleep = async function(timer){
var fn = setTimeout(function(){
console.log('打印')
},timer)
await fn
}
//async await
//輸出1-10000中所有的對稱數:例如121 1331等
var fn = function(){
return [...Array(10001).keys()].filter(x =>{
return x > 9 && x == (x.toString().split('').reverse().join(''))
})
}
給定一個數組,將數組中的元素向右移動 k 個位置,其中 k 是非負數
var fn = function(arr,k){
return arr.slice(arr.length - k).concat(arr.slice(0,arr.length - k))
}