/** * 去重 * findIndex * indexOf * @param {*} arr * @returns */ function unique(arr){ const result = [] arr.forEach(item=>{ if(!result.includes(item)){ result.push(item) } }) return result } /** * 集合法去重 * @param {*} arr * @returns */ function unique2(arr){ return [...new Set(arr)] } /** * 数组合并 * @param {*} arr * @param {...any} args * @returns */ function concat(arr,...args){ const result = [...arr] args.forEach(item=>{ if(Array.isArray(item)){ result.push(...item) }else{ result.push(item) } }) return result } /** * 切片 * @param {*} arr * @param {*} start * @param {*} end * @returns */ function slice(arr,start,end){ if(arr.length <= 0) return [] start = start || 0 if(start >= arr.length) return [] end = end || arr.length if(start >= end) end = arr.length const result = [] arr.forEach((item,index)=>{ if(index >= start && index < end){ result.push(item) } }) return result } /** * 将多维数组变为一维数组 1 * @param {*} arr * @returns */ function flatten1(arr){ let result = [] arr.forEach(item=>{ if(Array.isArray(item)){ result = result.concat(flatten1(item)) }else{ result = result.concat(item) } }) return result } /** * 将多维数组变为一维数组 2 * @param {*} arr * @returns */ function flatten2(arr){ let result = [...arr] while(result.some(item=>Array.isArray(item))){ result = [].concat(...result) // concat 可以把元素放入数组 示例:[].concat(1,2,[3,4]) => [1,2,3,4] } return result } /** * 数组分组 * @param {*} arr * @param {*} size * @returns */ function chunk(arr,size = 1){ if(arr.lenght === 0) return [] let result = [] let tmp = [] arr.forEach(item=>{ if(tmp.length === 0){ result.push(tmp) } tmp.push(item) if(tmp.length === size){ tmp = [] } }) return result } /** * 差 * @param {*} arr * @param {*} arr1 * @returns */ function diffrence(arr,arr1){ return arr.filter(item=>!arr1.includes(item)) } /** * 删除数组元素,并返回删掉的元素 * @param {*} arr * @param {...any} args * @returns */ function pull(arr,...args){ const result = [] for(let i = 0;i{ return index >= size }) }