关于js数组常用方法的总结

最近在开发项目的时候,一直在频繁的操作数组,对于一些数组的方法的区别还不是很熟悉,在这里手写记录下来,加强记忆。主要是包含四组(find、filter),(every、some),(map、forEach),(splice、slice)方法,也顺便记录一下他们之间的区别。

find和filter方法

1. find()方法

find()方法是找到数组中第一个符合条件(条件由传入的函数指定)的元素,找到之后遍历的过程即结束,不会再执行,返回值是这个元素;当整个数组没有符合条件的元素时,返回undefined。

	let arr = [1,2,3,4,5]  
	let res1 = arr.find(ele=>ele>3})  //返回arr中大于3的第一个数
	let res2 = arr.find(ele=>ele>5})  //返回arr中大于5的第一个数
	console.log(res1)   // 4
	console.log(res2)   // undefined

2. filter()方法

filter()方法是找到数组中所有符合条件的元素,并且将这些元素放在一个新的数组中作为返回值,如果没有符合条件的元素,则返回一个空数组。

	let arr = [1,2,3,4,5]  
	let res1 = arr.filter(ele=>ele>3})  //返回arr中大于3的所有的数
	let res2 = arr.find(ele=>ele>5})  //返回arr中大于5的所有的数
	console.log(res1)   //  [4,5]
	console.log(res2)   //  []

3. 异同点

  1. 相同点:两个方法都不会对空数组进行检测;两个方法都不会改变原数组。
  2. 不同点:返回值不同,find()返回的是数组中的一个元素,而filter()返回的是一个数组;find()不一定会遍历整个数组,更节省性能,而filter会遍历整个数组。

every和some方法

1. every()方法

every()方法用来检测数组中的元素是否都符合某个条件,返回值是布尔值,当所有的元素都符合条件时,返回true,但是只要有一个不符合条件,遍历的过程立刻终止并且返回false。

	let arr = [1,2,3,4,5]  
	let res1 = arr.every(ele=>ele>0})  //检测数组中的值是否都大于0
	let res2 = arr.every(ele=>ele>5})  //检测数组中的值是否都大于5
	console.log(res1)   //  true
	console.log(res2)   //  false

2. some()方法

some()方法与every()方法刚好相反,用来检测数组中是否有符合条件的元素,若有,则遍历终止,返回true,若所有的元素都不符合条件,则返回false。

	let arr = [1,2,3,4,5]  
	let res1 = arr.some(ele=>ele>3})  //检测数组中的值是否有值大于3
	let res2 = arr.some(ele=>ele>5})  //检测数组中的值是否有值大于5
	console.log(res1)   //  true
	console.log(res2)   //  false

3. 异同点

  1. 相同点:两个方法都不会对空数组进行检测;返回值都是布尔值;都不会改变原数组。
  2. 不同点:当空数组调用every()方法的时候,永远都会返回true,而调用some()时,总是返回false。
	let arr = []
	let res1 = arr.some(ele=>ele>1)
	let res2 = arr.every(ele=>ele>1)
	console.log(res1)   //  false
	console.log(res2)   //  true

map和forEach方法

1. map()方法

map()方法遍历数组为每个元素都执行回调函数,返回值是执行回调之后的元素组成的数组,但是它并不会改变原数组。

	let arr = [1,2,3,4,5]  
	let res = arr.map(ele=>ele+3})  //让每个元素都加3
	console.log(res)   //  [4,5,6,7,8] 
	console.log(arr)   //  [1,2,3,4,5] 

2. forEach()方法

forEach()方法遍历数组,可以传一个回调函数,让每个元素都执行相应的操作,需要注意的是空数组调用是不会执行回调的,方法并没有返回值。所以如果只是需要为数组中的每个元素执行某个操作而遍历数组,推荐使用foreach而不是map。

	let arr = [1,2,3,4,5]  
	let res = arr.forEach(ele=>ele+3})  //让每个元素都加3
	console.log(res)   //  undefined
	console.log(arr)   //  [4,5,6,7,8]

3. 异同点

  1. 相同点:都会遍历整个数组并且数组中的每个元素都会执行回调函数;都不会检测空数组。
  2. 不同点:map有返回值,而forEach没有;map不会改变原数组,而forEach是可以改变的。

splice和slice方法

1. splice()方法

splice()方法从数组中添加/删除元素,如果删除的话,会返回被删除的元素组成的数组,可接收两个及以上参数,第一个是元素的索引值,规定方法执行的起点,必传;第二个是要删除的个数,如果是0,则不会删除元素,必传;第三个是可选参数,可以为多个,是要向数组中添加的元素。splice() 方法可删除从 起点处开始的零个或多个元素,并且用参数列表中声明的一个或多个值来替换那些被删除的元素。

	let arr = [1,2,3,4,5]  
	let res = arr.splice(1,2)  //从索引为1的地方删除2个元素
	console.log(res)   //  [2,3]
	console.log(arr)   //  [1,4,5]


	let arr = [1,2,3,4,5]  
	let res = arr.splice(1,2,7,8)  //从索引为1的地方删除2个元素,并用7,8替换
	console.log(res)   //  [2,3]
	console.log(arr)   //  [1,7,8,4,5]
	

2. slice()方法

slice()方法接收两个参数start,end,从数组中返回索引从start到end的元素组成的新数组,但是不包括end这个元素。如果不指定end,则返回从start开始之后的所有元素。slice不会改变原数组。

	let arr = [1,2,3,4,5]  
	let res = arr.slice(2,4)  //返回索引在2到4的元素
	console.log(res)   //  [3,4]
	console.log(arr)   //  [1,2,3,4,5] 

3. 异同点

  1. 相同点:都可以返回指定的元素
  2. 不同点:splice会改变原数组,用法相对灵活,slice不会改变原数组,只能返回指定的元素。
发布了1 篇原创文章 · 获赞 0 · 访问量 6

猜你喜欢

转载自blog.csdn.net/weixin_42484067/article/details/105580086