【注】不管是数组的方法还是字符串的方法,不仅要记住方法,还要记住方法的意思,方法的参数,方法的返回值,原有值是否改变,这四个没有一个是多余的
1.转字符串的方法:toString join => str.split
2.堆栈方法:
push() 返回值 =>增加数组后的长度;
pop() 返回值 =>删除的项目
unshift() 返回值 =>增加数组后的长度;
shift() 返回值 =>删除的项目
3.排序方法:
sort() 返回值 =>排序之后的原数组;
reverse() 返回值 =>倒序之后的原数组;
4.拼接方法:
concat() 返回值 =>新数组;
es6:用…拼接
var arr=[1,2]
console.log(arr,[…arr,3,4])
5.删改的方法:slice splice
slice:(不改变原数组)
例子“
var arr=[1,2,3,4,5]
//左闭右开区间[ ) start,end; (无法交换位置)
//传的参数为空时会将原数组拷贝
//参数为一个时将从指定位置开始截取原数组到最后
console.log(arr.slice(2)) //=>[3, 4, 5]]
console.log(arr.slice(2,4)) //[3, 4]
console.log(arr.slice(4,2)) //[]
console.log(arr.slice(-2)) //[4,5]
console.log(arr.slice(-2,-1)) //[4]
//用slice将类数组转换为数组
var str=‘123456’
console.log(Array.prototype.slice.call(str)) //[“1”, “2”, “3”, “4”, “5”, “6”]
function test() {
console.log(Array.prototype.slice.call(arguments)) //[1, 2, 3, 4, 5]
}
test(1,2,3,4,5)
slice作用:
1.返回一个新的数组
2.将字符串变成一个新的数组
splice (改变原数组)
//左闭右开区间[ ) start,end; (无法交换位置)
//传的参数为空时会返回一个空数组
//参数为一个时将从指定位置开始截取原数组到最后
//能操作原数组
//如果参数为两个,第一个参数是增加或是删除的位置,第二个是删除元素的个数
//如果第二个参数为负值或者其他不合法的值,,会返回空数组,,因为删除的个数不能为负值和其他不合法的值,和slice不一样
//传的参数如果只有一个0的话讲全部截取,返回整个数组
//如果参数为三个,第三个参数是插入的值
6.查询方法
indexOf和lastIndexOf includes(ES6)
indexOf
返回当前元素的索引值,如果元素不存在,返回-1
7,创建数组方法 Array()构造函数可以用来创建数组,一般不用
Array.fill() 填充数据**
var arr=[1,2,3,4,5,6,7,8];
// console.log(arr.fill(6)) //修改的是原数组
console.log(arr.fill(6,0,3)) //传的三个参数代表,填充的数值,起始位置,终点位置
Array.from() =>把类数组变为真正的数组
Array.of() //填充的是单个的值
// var arr=[1,2,3,4,5,6,7,8];
// // console.log(Array.of(3,4,5))
// console.log(Array.from(‘123’)) //将类数组对象转换为真正的数组对象
// function test() {
// console.log(Array.prototype.slice.call(arguments))
// console.log(Array.from(arguments))
// console.log([…arguments]) //…这个等价于Array.from
// }
// test(1,2,3,4,5)
8.find findIndex
var arr=[1,2,3,4,5,6,7,8];
console.log(arr.find(item => item>4)) //5 返回第一个符合条件的成员
console.log(arr.findIndex(item => item>4)) //4 返回第一个符合条件的成员的索引
9.数组遍历方法
Array.keys() Array.values() Array,entries()
forEach map reduce reduceRight some every filter
forEach
1,forEach没有返回值
2.第二个参数 this
3.碰到空数组会直接跳过,for循环碰到空数组会显示undefied
4.continue和break关键字在forEach里不生效
5.类数组的调用方式
function test(…arg){
[…arg].forEach(item => console.log(item));
// […arguments].forEach(item => console.log(item));
// Array.prototype.forEach.call(arguments,function(item){
// console.log(item);
// })
}
test(1,2,3,4,5)
map 映射
有返回值,值一一对应
filter 过滤筛选符合条件的值
// var obj = {
// a:3,
// test: function () {
// console.log(1)
// }
// }
// var arr = [1,2,3,4,undefined,5,null,-1,0,’’,false,NaN];
// var arr1 = arr.filter(function(item,index,arr){
// // return item>2
// // return item
// // return item!=undefined
// // console.log(this)
// return Number.isInteger(item)
// },obj)
// console.log(arr1)
// console.log(undefined == null) //true
some every
var arr = [1,2,3,4,5];
var res1 = arr.some(function(item,index,arr){
return item%2===0; //只要有一个成员通过,返回就为true
})
var res2 = arr.every(function(item,index,arr){
return item%2===0; //所有成员都通过,才返回true,只要有一个不通过,就返回false
})
console.log(res1,res2) //true false
reduce 归纳函数,累加器
返回一个具体的值,能够实现所有的数组方法
// var res = 0;
// var sum =[{x:1},{x:2},{x:3}];
// sum.forEach(item =>{
// res+=item.x
// })
// console.log(res) //6
// var data = [{
// course: ‘dc’
// },
// {
// course:‘cc’
// }]
// var newArr = data.reduce(function(prev,elem,index,arr){
// prev.push(elem.course);
// return prev
// },[])
// console.log(newArr)
//数组的扁平化
var flattened = [[0,1],[2.3],[4,5]].reduce(function(a,b){
// return a.concat(b)
return […a,…b]
},[])
console.log(flattened)
【总结数组循环方法】
forEach 为了循环而循环,没有返回值,循环数组需要做任何额外的操作都需要自己来做
map 为了能够返回一个映射之后的数组,会和原数组产生映射关系,不管怎样原数组有多少项,返回的新数组就一定有多少项
filter 当你需要在原数组中过滤其中的某一项或者多项的话,用filter实现过滤
some 和 every 用于判断,,判断的标准是你传入的参数,里面的数组当中是否有一项或者多项全部通过
reduce 归纳函数,累加器 返回一个具体的值,能够实现所有的数组方法