flat()展开数组
let arr = [3,5,8,[1,2,3,[5,6,7,[1,[5,6,7,8,9]]]]]
console.log(arr.flat())
console.log(arr.flat(2))
console.log(arr.flat(Infinity)) //不改变原数组
arr.length = 0 //清空数组
console.log(arr)
默认展开一层,Infinity表示展开所有
new Set()去重
let arr1 = [1,1,2,3,4,6,5,444,4,4,0,7,8];
console.log(new Set(arr1))
console.log(arr1); //new Set不改变原数组
console.log(Array.from(new Set(arr1))) //转为数组格式
console.log(...new Set(arr.flat(Infinity)));
sort()排序
var arr = [66,55,3333,101,99,77,88];
console.log(arr);
console.log(arr.sort()); //转换为字符按照字符排序
console.log(arr.sort((a,b)=>a-b)); //正常排序
console.log(arr); //改变原数组
splice()截取替换
splice(start,num,data1,data2,…);
- start:表示从第几位开始 --索引
- splice(start):表示保留到start索引,超出删除
- num:表示删除几位
- splice(start,num):表示从start索引开始,删除num个
- data1,data2:表示从删除的位置开始填充
var arr = [1,2,3,4,5];
console.log(arr.splice(2,2,"a","a","a"));
console.log(arr.splice(2,2,"a"))
console.log(arr); // 改变原数组
reverse()反转数组
var arr = [1,2,3,4,5];
console.log(arr.reverse())
console.log(arr) // 改变原数组
forEach()循环遍历数组
var arr = [1,2,3,6,5]
arr.forEach((val,index,array) => {
console.log(val, index, array) // 不改变原数组,循环遍历,val为数组里的值,index为索引,array原数组
});
reduce()
var arr = [1,4,3,3]
sum = arr.reduce(function(prev,now,index,self){ //初始值(或者上一次回调函数的返回值),当前元素值,当前索引,调用 reduce 的数组
return prev*now
},1) // 1代表的是初始值,为空,则会把数组开头当作起始值
console.log(sum);
数组的添加删除
var arr = [00,0,0,0,0,0]
arr.unshift(5,4,3)
console.log(arr) //从首位开始添加,改变原数组
arr.shift(5)
console.log(arr) //从首位开始删除,改变原数组
arr.push(333,222)
console.log(arr) //从末位开始添加,改变原数组
fill填充
var arr = [0,0,0,0,0,0]
arr.fill(1) //只填写数据默认填充所有
console.log(arr) //改变原数组
arr.fill('3',3,5) // 填充的数据,开始填充的索引,结束填充的索引
console.log(arr)
将数组转换为对象
var arr = [3,8,3,6,5];
console.log({...arr});
console.log(arr)