数组上的方法总结

【注】不管是数组的方法还是字符串的方法,不仅要记住方法,还要记住方法的意思,方法的参数,方法的返回值,原有值是否改变,这四个没有一个是多余的

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 归纳函数,累加器 返回一个具体的值,能够实现所有的数组方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值