JavaScript操作数组常用API

JavaScript 数组操作方法详解
本文详细介绍了JavaScript中数组常用的操作方法,包括concat()、join()、slice()、splice()等,讨论了它们的功能和使用场景,特别是如何通过这些方法进行数组合并、字符串转换、元素插入删除以及排序等操作。此外,还提到了哪些方法会改变原数组,哪些方法不会改变原数组。

concat()方法

用于把两个或多个数组合并成一个数组,数组的索引会按照合并数组的顺序重新排序。返回一个新数组,是将参数添加到原数组中构成的。不会改变原数组。

join()方法

主要用于将数组内的元素使用字符拼接成一个字符串,不传拼接字符参数,默认使用逗号。返回一个字符串,不会改变原数组。

 

 slice()方法
能够基于当前数组中的一或多个项创建一个新数组,slice()方法可以接受一或两个参数,即要返回项的起始和结束位置,在只有一个参数的情况下,slice()方法返回从该参数指定位置开始到当前数组末尾的所有项,例如slice(3),则从下标为3的元素开始提取。如果有两个参数,该方法返回起始和结束位置之间的项,但不包括结束位置的项。不会改变原数组。

splice()方法
splice()方法需要传入2个以上的参数,第一个参数是索引开始的位置,第二个参数是删除元素的数量,第三个参数是在开始索引的位置插入的元素(可以为多个元素)。

删除:可以删除任意数量的项,指定2个参数:要删除的第一项的位置和要删除的项数。例如,splice(0, 2)会删除数组中的前两项
插入:可以向指定位置插入任意数量的项,提供3个参数:起始位置、0(要删除的项数)和要插入的项。如果要插入多个项,可以再传入任意多个项。例如,splice(2, 0, 'a', 'b')会从当前数组的位置2开始插入字符串"a"和"b"
替换:可以向指定位置插入任意数量的项,且同时删除任意数量的项,指定3个参数:起始位置、要删除的项数和要插入的任意数量的项。插入的项数不必与删除的项数相等。例如,splice(2, 1, 'a', 'b')会删除当前数组位置2的项,然后再从位置2开始插入字符串"a"和"b"
splice()方法始终都会返回一个数组,该数组中包含从原始数组中删除的项(如果没有删除任何项,则返回一个空数组)。改变原数组。

pop()方法

删除原数组最后一项,并返回删除元素的值;如果数组为空则返回undefined。改变原数组。


push()方法

将参数添加到原数组末尾,并返回数组的长度。改变原数组。

shift()方法

删除原数组第一项,并返回删除元素的值;如果数组为空则返回undefined。改变原数组。

unshift()方法

将参数添加到原数组开头,并返回数组的长度。改变原数组。

reverse()方法

这个方法主要用于反转数组元素,索引数组 reverse后会重新排序,返回反转后的数组。改变原数组。

sort()方法

按指定的参数对数组进行排序,当不带参数调用sort()时,数组元素以字母表顺序排序(如有必要将临时转化为字符串进行比较),默认都是以字符串形式比较的,是按照ACSII码顺序进行比较的。返回排序后的数组。改变原数组。

如果想按照数值大小进行排序,该如何操作呢?这就用到了带参数的sort方法,参数可以是function,这样就能够按照自定义的方式排序了。《JavaScript权威指南》给出了一种简便的按照数值大小比较的方法:

toString()方法 

toString() 方法可把数组转换为字符串,并返回结果,返回由数组中每个值的字符串形式拼接而成的一个以逗号分割的字符串注意: 数组中的元素之间用逗号分隔。不会改变原数组。

valueOf()方法
valueOf() 方法返回 Array 对象的原始值。返回的还是数组。一般就是返回自己。

该原始值由 Array 对象派生的所有对象继承。

valueOf() 方法通常由 JavaScript 在后台自动调用,并不显式地出现在代码中。

注意: valueOf() 方法不会改变原数组。

indexOf()方法
用法和字符串的indexOf()方法一模一样

lastIndexOf()方法 
用法和字符串的lastIndexOf()方法一模一样

includes()方法
includes() 方法用来判断一个数组是否包含一个指定的值,如果是返回 true,否则false。返回值为true/false。

语法:arr.includes(searchElement, fromIndex)

searchElement:必须。需要查找的元素值。
fromIndex:可选。从该索引处开始查找 searchElement。如果为负值,则按升序从 array.length + fromIndex 的索引开始搜索。默认为 0。
如果fromIndex 大于等于数组长度 ,则返回 false 。该数组不会被搜索

如果 fromIndex 为负值,计算出的索引将作为开始搜索searchElement的位置。如果计算出的索引小于 0,则整个数组都会被搜索。

every()方法
every() 方法用于检测数组所有元素是否都符合指定条件(通过函数提供)。返回值为true/false。

every() 方法使用指定函数检测数组中的所有元素:

如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
如果所有元素都满足条件,则返回 true。
注意: every() 不会对空数组进行检测。

注意: every() 不会改变原始数组。

语法:array.every(function(currentValue,index,arr), thisValue)

function(currentValue,index,arr):必须。函数,数组中的每个元素都会执行这个函数
currentValue:必须。当前元素的值
index:可选。当前元素的索引值
arr:可选。当前元素属于的数组对象
thisValue:可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue ,"this" 的值为 "undefined"

some() 方法 
some() 方法用于检测数组中的元素是否满足指定条件(函数提供)。返回值为true/false。

some() 方法会依次执行数组的每个元素:

如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。
如果没有满足条件的元素,则返回false。
注意: some() 不会对空数组进行检测。

注意: some() 不会改变原始数组。

语法:array.some(function(currentValue,index,arr),thisValue)

function(currentValue,index,arr):必须。函数,数组中的每个元素都会执行这个函数
currentValue:必须。当前元素的值
index:可选。当前元素的索引值
arr:可选。当前元素属于的数组对象
thisValue:可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue ,"this" 的值为 "undefined"

filter() 方法
filter() 方法返回一个新数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。

注意: filter() 不会对空数组进行检测。

注意: filter() 不会改变原始数组。

语法:array.filter(function(currentValue,index,arr), thisValue)

function(currentValue, index,arr):必须。函数,数组中的每个元素都会执行这个函数
currentValue:必须。当前元素的值
index:可选。当前元素的索引值
arr:可选。当前元素属于的数组对象
thisValue:可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue ,"this" 的值为 "undefined"

forEach()方法

forEach() 方法为每个数组元素调用一次函数(回调函数)。对数组中的每一项运行给定函数。这个方法没有返回值本质上与使用for循环迭代数组一样。(实质上就是for循环的缩写)。

注释:该函数接受 3 个参数:

  • 项目值
  • 项目索引
  • 数组本身

map() 方法
map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。

map() 方法按照原始数组元素顺序依次处理元素。

注意: map() 不会对空数组进行检测。

注意: map() 不会改变原始数组。

语法:array.map(function(currentValue,index,arr), thisValue)

function(currentValue,index,arr):必须。函数,数组中的每个元素都会执行这个函数
currentValue:必须。当前元素的值
index:可选。当前元素的索引值
arr:可选。当前元素属于的数组对象
thisValue:可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue,或者传入 null、undefined,那么回调函数的 this 为全局对象

reduce() 方法 
reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。

reduce() 可以作为一个高阶函数,用于函数的 compose。

注意: reduce() 对于空数组是不会执行回调函数的。

语法:array.reduce(function(total, currentValue, currentIndex, arr), initialValue)

function(total,currentValue, index,arr):必需。用于执行每个数组元素的函数。
total:必需。初始值, 或者计算结束后的返回值。
currentValue:必需。当前元素
currentIndex:可选。当前元素的索引
arr:可选。当前元素所属的数组对象。
initialValue:可选。传递给函数的初始值

 

综上所述,JS操作数组的API中不改变原始数组的方法有concat()方法、join()方法、slice()方法。其他方法都改变原数组!

不会改变原来数组的有:
concat()---连接两个或更多的数组,并返回结果。

every()---检测数组元素的每个元素是否都符合条件。

some()---检测数组元素中是否有元素符合指定条件。

filter()---检测数组元素,并返回符合条件所有元素的数组。

indexOf()---搜索数组中的元素,并返回它所在的位置。

join()---把数组的所有元素放入一个字符串。

toString()---把数组转换为字符串,并返回结果。

lastIndexOf()---返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索。

map()---通过指定函数处理数组的每个元素,并返回处理后的数组。

slice()---选取数组的的一部分,并返回一个新数组。

valueOf()---返回数组对象的原始值。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值