js数组(Array)库方法的返回值,是否改变原数组等方法的一些总结

    写的有不对的地方希望大神指教!不想看方法,直接看总结的在最下面。

    如果想看详细的Array库数组的方法推荐大家到阮一峰老师的javascript标准参考教程:传送门

    首先我们知道js中的Array对象中封装了很多的方法,这些方法用的时候非常的方便,大大缩短了我们的开发时间,但是这些函数就像一母生九子,九子各不同,他们功能不相同但是他们都是一点是我们非常头疼的,就是这个方法是否改变原数组,还是他返回的是一个新数组,或者它返回的还可能是被删除的元素。比如splice。这些东西熟能生巧,用的时候如果忘了就去查一下,多用几次就记住了。但是面试笔试的时候可不会给你查这些东西的机会,所以如果可以就记下来。也没坏处不是么。
    我就这些方法做一些笔记,最后再来一个总结吧。
1.Array.isArray()
返回一个布尔值,是否为数组,弥补了typeof运算符的不足。

var arr = [1,2,3];
typeof arr;//"object"
Array.isArray(arr)//true

2.valueOf() toString()
valueOf()方法是一个所有对象都拥有的方法,表示对该对象求值,不同对象的valueof方法不尽一致,数组的valueOf()返回数组本身。
toString()方法也是所有对象都拥有的方法,数组的toString方法返回数组的字符串形式。


3.push() pop()
push方法这是我们最常用的,用于在数组末端添加一个数据,参数个数无限制
能否改变原数组:能
返回值:添加新元素后数组的长度

pop方法用于删除数组的最后一个元素,并且返回该元素。
能否改变原数组:能
返回值:返回被删除的元素


4.shift() unshift()
shift方法用于删除数组的第一个元素,并返回该元素。
能否改变原数组:能
返回值:返回被删除的元素

unshift方法用于在数组的第一个位置添加元素,并返回添加新元素后的数组长度。
能否改变原数组:能
返回值:添加新元素后数组的长度


5.join方法
以指定的参数作为分隔符,将所有数组成员连接为一个字符串返回,如果不提供参数,默认用逗号分隔。如果数组成员是undefined或null或空位,会被转化为空字符串

能否改变原数组:不能
返回值:数组成员以制定符号分割之后的字符串。


6.concat()
concat用于将多个新数组添加到原数组后,组成一个新数组返回,原数组不变。
能否改变原数组:不能
返回值:组成的新数组


7.reverse()
reverse方法用于颠倒排列数组元素,返回改变后的数组。注意,该方法将改变原数组。


8.slice()
slice方法用于提取目标数组的一部分,返回一个新数组,原数组不变。
slice(start,end) 包不包括临界值如下[start,end)
没有参数的情况下返回原数组的拷贝
一个参数时,end为数组.length。
slice方法的重要应用:将类似数组的对象转化为真正的数组。
Array.prototype.slice.call(arguments);


9.splice()
splice方法用于删除原数组的一部分成员,并可以在删除的位置添加新的数组成员,返回值是被删除的元素。注意,该方法会改变原数组。
splice(start,count,addElement1,addElement2);
能否改变原数组:能
返回值:返回值是被删除的元素。


10.sort()
sort方法对数组成员进行排序,默认是按照字典顺序排序,排序后,原数组将改变。sort可以按照自定义的方式排序,可以传入一个函数作为参数,这个函数拥有两个参数,如果返回值大于0,表示第一个成员排在第二个成员后面,其他情况下,都是第一个元素排在第二个元素前面。
能否改变原数组:能
返回值:返回值为排序后的数组。


11.map()
map方法将数组的所有成员一次传入参数函数,然后把每一次执行的结果组成一个新数组返回。
能否改变原数组:可以改变原数组,也可以不改变
返回值:返回值为执行过参数函数后组成的新数组。


12.forEach()
forEach方法与map相似,如果想要返回值,用map,如果单纯的想让数组中的没一个元素都执行某一方法。用forEach函数的参数也是一个函数,这个函数可以有三个参数,第一个是,当前值,当前位置,整个数组。
forEach也可以有第二个参数,绑定参数函数的this值。
forEach无法中断执行。如果希望中断用for循环。
forEach会跳过数组的空位置,但是不会跳过undefined和null
能否改变原数组:能不能取决于操作
返回值:返回值为执行过参数函数后组成的新数组。


13.filter()
filter用于过滤数组成员,满足条件的成员组成一个新数组返回。它的参数是一个函数(函数的参数为elem,index,arr—–依次是当前值,当前位置,整个数组),所有数组成员依次执行该函数,返回结果为true的成员组成一个新数组返回,该方法不会改变原数组。

能否改变原数组:能不能也取决于操作,毕竟参数函数的参数中有整个数组这个参数。
返回值:返回值为能使参数函数返回true的数组成员。


14.some() every()
这两个方法类似‘断言’,返回一个布尔值,表示判断数组成员是否符合某种条件。
他们接受一个函数作为参数,所有数组成员,一次执行该函数,该函数接受三个参数:当前成员,当前位置和整个数组,然后返回一个布尔值。
some方法只要一个成员返回值是true,则整个some方法返回值就是true,否则返回false。
那么every方法就是所有成员都返回true,整个every方法才返回true,否则返回false

能否改变原数组:不能
返回值:true||false


15reduce(),reduceRight()
reduce方法和reduceRight方法依次处理数组的每个成员,最终累计为一个值。它们的差别是,reduce是从左到右处理(从第一个成员到最后一个成员),reduceRight则是从右到左(从最后一个成员到第一个成员),其他完全一样。


16.indexOf(),lastIndexOf()
indexOf方法返回给定元素在数组中第一次出现的位置,如果没有出现则返回-1。
indexOf方法还可以接受第二个参数,表示搜索的开始位置。
lastIndexOf方法返回给定元素在数组中最后一次出现的位置,如果没有出现则返回-1。

注意:
这两个方法不能用来搜索NaN的位置,即它们无法确定数组成员是否包含NaN。
但是:es6中的新方法,Array.find()和ArrayfindIndex()都可以找到NaN。

可以改变也可以不改变原数组的方法:
map
forEach
filter

能改变原数组的方法:
push
pop
shift
unshift
reverse
splice
sort

不能改变原数组的方法:
join
concat
slice
some
every
reduce
reduceRight
indexOf
lastIndexOf

返回值为新数组的方法:
concat
reverse
slice
sort
map
filter

返回值为其他的:
push:返回为添加新元素后的数组的长度。
pop::返回被删除元素。
shift:返回被删除元素。
unshift:返回为添加新元素后的数组长度。
join:返回为由制定字符分隔之后数组成员连接而成的字符串。
splice:返回值是被删除的元素。
some:true||false
every:true||false
indexOf:index||-1
lastIndexOf:index||-1

猜你喜欢

转载自blog.csdn.net/weixin_42158320/article/details/80527675
今日推荐