js数组常用的一些方法

js数组常用的一些方法

** 阿里面试题 **
可以把数组arr = [1,2,3]变成[4,3,2,1]的有( B EA:arr.push(4).reverse()//报错  arr.push(...).reverse is not a function
B:arr.push(4) 
  arr.reverse()
C:arr.reverse().unshift(4) //4,返回新数组的长度
D:arr.reverse().splice(0,0,4) //[]
E:arr.splice(3,0,4) arr.reverse()

常用API

- pop:删除数组的最后一个数(改变原数组)
let arr = [1,3,4,5,6]
let newArr = arr.pop()
console.log('arr',arr)
console.log('newArr',newArr)//返回的是删除的元素

结果:
在这里插入图片描述

- push:添加到数组最后面(改变原数组)
let arr = [1,3,4,5,8]
let newArr = arr.push(9)
console.log('arr',arr)
console.log('newArr',newArr)//返回数组的长度

结果:
在这里插入图片描述

- shift:删除数组的第一个数(改变原数组)
let arr = [1,3,4,5,8]
let newArr = arr.shift()
console.log('arr',arr)
console.log('newArr',newArr)//返回删除的元素

结果:
在这里插入图片描述

- unshift:添加到数组的最前面(改变原数组)
let arr = [1,3,4,5,8]
let newArr = arr.unshift(333)
console.log('arr',arr)
console.log('newArr',newArr)//返回数组的长度

结果:
在这里插入图片描述

- reverse:数组反转(改变原数组)
let arr = [1,3,4,5,8]
let newArr = arr.reverse()
console.log('arr',arr)
console.log('newArr',newArr)//返回值是数组

结果
在这里插入图片描述

- splice:可以向数组删除并加入新的元素。(改变原数组)

传两个参数,第一个参数是索引值的起始位置,第二个参数是删除几个元素

let arr = [1,3,4,5,8]
let newArr = arr.splice(1,1)//索引为1,删除一个元素
console.log('arr',arr)
console.log('newArr',newArr)//返回删除的元素

结果:
在这里插入图片描述

传多个参数,第一个参数是索引的起始位置,第二个参数是删除了几个元素,第三个以后是在这个位置上添加的元素

let arr = [1,3,4,5,8]
let newArr = arr.splice(1,1,58)//在索引为1的位置,删除一个,插入一个
console.log('arr',arr)
console.log('newArr',newArr)

结果:
在这里插入图片描述

let arr = [1,3,4,5,8]
let newArr = arr.splice(1,0,58)//在索引为1的位置,删除0个,添加一个
console.log('arr',arr)
console.log('newArr',newArr)//没有删除的元素,返回的是一个空数组

结果:
在这里插入图片描述

- slice:方法可从已有数组中返回选定的元素,返回一个新数组,包含从start到end(不包含该元素)的数组元素。(不改变原数组)
let arr = [1,2,2,3,5]
console.log(arr.slice(0,3))
console.log(arr)

结果:
在这里插入图片描述

- join:数组中的数拼接成字符串(不改变原数组)
let arr = [1,3,4,5,8]
let newArr = arr.join('-----')
console.log('arr',arr)
console.log('newArr',newArr)

结果
在这里插入图片描述

- concat:合并数组,生成新数组(不改变原数组)
let arr = [1,3,4,5,8]
let arr1 = ['lisi','wangwu']
let newArr = arr.concat(arr1)
console.log('arr',arr)
console.log('arr1',arr1)
console.log('newArr',newArr)

结果:
在这里插入图片描述

- sort:数组进行排序(改变原数组)

arrayObject.sort([function])

function是可选的,用来指定按某种顺序进行排列的函数。如果省略,元素按照转换为的字符串的各个字符的Unicode位点进行排序。
若比较函数,则传入两个参数

若 a < b,在排序后的数组中 a 在前,b在后 ,则返回一个小于 0 的值。正序排列
若 a = b,则返回 0。
若 a > b,则返回一个大于 0 的值,倒序排列

let arr = [2,8,5,9,3,7]
function sortFn(a,b){
   return a-b
}
let newArr = arr.sort(sortFn)
console.log('原数组',arr)
console.log('新数组',newArr)

结果:
在这里插入图片描述

let arr = [2,8,5,9,3,7]
function sortFn(a,b){
   return b-a
}
let newArr = arr.sort(sortFn)
console.log('原数组',arr)
console.log('新数组',newArr)

结果:
在这里插入图片描述

- indexOf:检索数组单元值,如果有值,则返回索引值,如果没有找到,就返回-1
let arr = [2,8,5,9,3,7]
arr.indexOf(3)//在数组中找是否有3这个元素

结果:
在这里插入图片描述

let arr = [2,8,5,9,3,7]
arr.indexOf(6)

结果:
在这里插入图片描述

- from:伪数组转成真数组 Array.from()

从 String 生成数组

Array.from('foo');//["f", "o", "o"]

从类数组对象(arguments)生成数组

function f() {
  return Array.from(arguments);
}
console.log(f(1, 2, 3));// [1, 2, 3]
- forEach:数组遍历,可以替代for循环
let arr = [2,8,5,9,3,7]
arr.forEach((item,index)=>{
console.log(item,index)//item是数组元素,index是索引
})

结果:
在这里插入图片描述

高级API

- filter:生成新数组,回调函数返回的结果是一个boolean值,为true时,返回匹配的项,为false,返回空数组(不改变原数组)
let arr = [5,8,5,7]
let newArr = arr.filter(item=>{
return item>8 //匹配项为false
})
console.log('原数组',arr)
console.log(newArr)

结果:
在这里插入图片描述

let arr = [5,8,5,7]
let newArr = arr.filter(item=>{
return item>5
})
console.log('原数组',arr)
console.log(newArr)

结果:
在这里插入图片描述

- map:循环遍历数组的每一项,也只能遍历数组,必须要有返回值,否则就是undefined

语法:

原数组.map(callback(item,index,arr)=>{
	console.log(item)//数组中每一个元素
	console.log(index)//数组下标
	console.log(arr)//原数组
})
let arr1 = [1,4,6,7,8]
let arr2 = []
arr1.map(item=>{
   return arr2.push(item*2)
})
console.log(arr1)
console.log(arr2)

结果:
在这里插入图片描述

- reduce:接收一个函数作为累加器,数组中的每个值(左到右)开始缩减,最终为一个值(不改变原数组)

语法:

原数组.reduce(callback(pre,cur,index,arr)=>{
	    console.log(pre)//上一个的值
		console.log(cur)//当前值
		console.log(index)//当前值的索引,可省略
		console.log(arr)//数组,可省略
},[num])//[num]作为第一次调用 callback 的第一个参数,可选,如果没有,
		//则是数组的第一个元素,可以是一个对象{},[]
let arr1 = [1,4,6,7,8]
let newArr = arr1.reduce((pre,cur)=>{
    return pre += cur
},0)
console.log('原数组',arr1)
console.log('新数组',newArr)

结果:
在这里插入图片描述

- includes:判断一个数组是否包含一个指定的值,结果是布尔值,如果包含则是true,否则是false

语法:

arr.includes(查找的元素,从索引值开始查找)//第二个参数可选
let arr1 = [1,4,6,7,8]
arr1.includes(4)	//true

ES6新增方法

Array.from ()

Array.from()方法就是将一个类数组对象或者可遍历对象转换成一个真正的数组

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值