数组的方法一共29个:
1.转字符:toString, join,
str.split
2.堆栈方法:
push 返回增加后的长度
pop 返回删除的最后一个项目
unshift 返回增加数组的长度
shift 删除的项目
3.排序 reverse() sort随机排序
var arr = [1,2,3,4,5]
arr.sort() // 从小到大
arr.sort((a,b)=>b-a) // 从大到小
arr.sort(()=> Math.random() -0.5) // 随机排序
4.拼接 concat
arr.concat([1,2]) //二维会展平为一维数组
5.删改的方法
slice // 不改原数组
splice // 改原数组
纯数组的浅拷贝:
浅拷贝过来的数据只有第一层数据不是共享的,第二层乃至第三层的数据和源对象是共享的。而深拷贝是和源对象没有任何共享的。
1.slice
var arr = [1,2,3,4,5]
newarr = arr.slice(0)
2.concat
newarr2 = arr.concat()
3.[…arr]
4.Array.from
slice(start,end) // 返回新数组
var arr = [1,2,3,4,5]
arr.slice(3) //[4,5]
splice(start, num) // 删除原数组,返回删除的数组,第二个值为个数
arr.splice(-2) //[4,5]
splice(start, num,5) //第三个值为插入数(删除并插入),可以是数组,concat不能插入数组
var arr=[1,2]
arr.splice(0,5,0,0,0) // [0,0,0] return [1,2]
arr.splice(0,1,[1,2,3]) //[[1,2,3],2] return 0
类数组:
1.字符串
2.argument
3.将类数组转为数组
dom对象,如document.getElementByTagName(‘div’)
类数组只有length,没有数组上的其他方法,所以用call调用
[].slice.call(‘duanhuikun’)
[…‘duanhuikun’]
Array.from(类数组) //将类数组转为数组
6.indexOf lastIndexOf,includes
const array1 = [1, 2, 3];
console.log(array1.includes(2));
// expected output: true
7.创建数组的方法:
Array() //因为不方便单个值,所以出现of
of,from,fill(6,start,end)
Array.of(3,4,5),变成数组
Array.from()类数组变成数组
8.find findIndex
arr.find(n =>n>3) //返回第一个符合条件的成员
findIndex //返回索引
9.迭代
keys,value,entries(返回keys,values的迭代条目)
10.数组遍历的方法
forEach,filter,map,Array.from,some,every
map((item, index, arr) => console.log(item))
这几个参数都一样,除了下面的reduce
forEach没有返回值,即使设置return也没有
some返回 boolean //有一个满足条件,就返回boolean
every//每个符合条件,返回boolean
arr.some(item => item%2===0)
reduce,reduceRight
reduce((total,item,index,arr)=>total+1, initvalue)
数组展平
(function flattenRe(arr2){
return arr2.reduce((total,item)=>total.concat(Array.isArray(item)?flattenRe(item):item),[])
})(arr2)
以上数据或者换一种思路记忆
var arr = [1,2,3,4]
1.增
arr.push()//返回增加后数组的长度
arr.unshift()//返回增加后数组的长度
arr = arr.concat(7,8)//拼接几个数组
2.删
arr.pop()//返回删除后的项目
arr.shift()// 返回删除后的项目
arr.splice(start,length)// 返回删除的数组项目
3.改
arr.splice(start,length,替换项目) // 返回修改删除的数组
slice(start,end) //不修改原数组
arr[num]=newNum
排序
arr.reverse()
arr.sort()
arr.sort() // 从小到大
arr.sort((a,b)=>b-a) // 从大到小
arr.sort(()=> Math.random() -0.5) // 随机排序
4.查
arr.indexof()//返回index
arr.lastIndexOf()//返回index
arr.includes()//返回boolean
arr.find(x=>x>3) //返回第一个符合的项目
arr.findIndex(x=>x>3)//返回第一个符合index
5.转字符串
toString()
join() //如果字符转数组split(’’)
6.数组浅拷贝
浅拷贝过来的数据只有第一层数据不是共享的,第二层乃至第三层的数据和源对象是共享的。而深拷贝是和源对象没有任何共享的。
newarr = arr.concat()
newarr2 = arr.slice(0)
newarr3 =[…arr]
newarr4= Array.from(arr)
7.迭代器
key,value,entries,fromEntries
8.遍历
for,forEach,filter,map,Array.from,every,some,
reduce,reduceRight
reduce((total,item,index,arr)=>total+1, initvalue)