# 数组
# String
const name = 'Zelda';
const letters = [...name]; // 'Z', 'e', 'l', 'd', 'a'
1
2
2
# 扁平化
# toString
let arr=[1,[[2],[3,4]]]
console.log(arr.toString().split(",").map(item=>+item));//[1,2,3,4]
1
2
2
# flatten函数
function flatten(arr){
let result=[];
for(let i=0;i<arr.length;i++){
if(Array.isArray(arr[i])){
result=result.concat(flatten(arr[i]))
}else{
result.push(arr[i])
}
}
return result;
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# reduce
function flatten(arr){
return arr.reduce((pre,current)=>{
return pre.concat(Array.isArray(current)?flatten(current):current)
},[])
}
1
2
3
4
5
2
3
4
5
# 数组去重
function noRepeat(arr){
return [...new Set(arr)];
}
1
2
3
2
3
# 数组最大值
function arrayMax(arr){
return Math.max(...arr);
}
1
2
3
2
3
# 返回以size为长度的数组分割的原数组
function chunk(arr,size){
return Array.from({
length:Math.ceil(arr.length/size)
},(v,i)=>{
arr.slice(i*size,i*size+size)
})
}
1
2
3
4
5
6
7
2
3
4
5
6
7
# 检查数组中某元素出现的次数
function countRepeat(arr,value){
return arr.reduce((a,v)=>v===value?a+1:a+0,0)
}
1
2
3
2
3
# 数组所有元素出现的个数
function countAllRepeat(arr){
return arr.reduce((prev,next)=>{
prev[next] = (prev[next] + 1) || 1;
return prev;
},{})
}
1
2
3
4
5
6
2
3
4
5
6
# 对比俩个数组并返回其中不同的元素
function compareArr(arr1,arr2){
return arr1.filter(v=>!arr2.includes(v))
}
1
2
3
2
3
# 对比俩个数组并返回其中相同的元素
function compareArr(arr1,arr2){
return arr1.filter(v=>arr2.includes(v))
}
1
2
3
2
3
# 从右删除n个元素
function deleteRight(arr,n){
return n<arr.length?arr.slice(0,arr.length-n):[]
}
1
2
3
2
3
# 返回数组中第n个元素
function nthElement(arr, n = 0) {
return (n >= 0 ? arr.slice(n, n + 1) : arr.slice(n))[0]
}
1
2
3
2
3
# 数组乱排
function shuffle(arr) {
let array = arr
let index = array.length
while (index) {
index -= 1
let randomInedx = Math.floor(Math.random() * index)
let middleware = array[index]
array[index] = array[randomInedx]
array[randomInedx] = middleware
}
return array
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14