Array常用方法整理
Contents
Array.prototype.map()
1.关键词:遍历
2.是否修改原数组:false
3.返回值:
newArray[]
,回调函数的结果组成了新数组的每一个元素。
4.语法:
|
|
currentValue
:callback数组中正在处理的当前元素;index
:可选,callback数组中正在处理的当前元素的索引;array
:可选,map方法调用的数组,几乎不用
5.描述
map
方法会给原数组中的每个元素都按顺序调用一次 callback
函数。callback
每次执行后的返回值(包括undefined
)组合起来形成一个新数组。 callback
函数只会在有值的索引上被调用;那些从来没被赋过值或者使用 delete
删除的索引则不会被调用。
因为map
生成一个新数组,当你不打算使用返回的新数组却使用map
是违背设计初衷的,请用forEach
或者for-of
替代。
callback
函数会被自动传入三个参数:数组元素,元素索引,原数组本身。
6.示例
|
|
Array.prototype.pop()
1.关键词:删除
2.是否修改原数组:true
3.返回值:
从数组中删除的元素(当数组为空时返回undefined
)
4.语法:
|
|
5.描述:
pop
方法从一个数组中删除并返回最后一个元素。
pop
方法有意具有通用性。该方法和call()
或apply()
一起使用时,可应用在类似数组的对象上。pop
方法根据 length
属性来确定最后一个元素的位置。如果不包含length
属性或length
属性不能被转成一个数值,会将length
置为0,并返回undefined
。
如果你在一个空数组上调用 pop(),它返回undefined
。
6.示例
|
|
*Array.prototype.fill()
1.关键词:修改、填充
2.是否修改原数组:true
3.返回值:
修改后的数组
4.语法:
|
|
value
:用来填充数组元素的值start
:可选,起始索引,默认值为0end
:可选,终止索引,默认值为this.length
5.描述:
fill
方法接受三个参数 value
, start
以及 end
。 start
和end
参数是可选的, 其默认值分别为 0
和 this
对象的 length
属性值。
如果 start
是个负数, 则开始索引会被自动计算成为 length+start
, 其中 length
是 this
对象的 length
属性值。如果 end
是个负数, 则结束索引会被自动计算成为 length+end
。
当一个对象被传递给 fill
方法的时候, 填充数组的是这个对象的引用。
6.示例:
|
|
*Array.prototype.find()
1.关键词:查找
2.是否修改原数组:false
3.返回值:
数组中第一个满足所提供测试函数的元素的值,否则返回undefined
4.语法:
|
|
element
:当前遍历到的元素index
:可选,当前遍历到的索引array
:可选,数组本身,基本用不到
5.描述:
find
方法对数组中的每一项元素执行一次 callback
函数,直至有一个 callback 返回 true
。当找到了这样一个元素后,该方法会立即返回这个元素的值,否则返回undefined
。注意 callback
函数会为数组中的每个索引调用即从 0
到 length - 1
,而不仅仅是那些被赋值的索引,这意味着对于稀疏数组来说,该方法的效率要低于那些只遍历有值的索引的方法。
find
方法不会改变数组。
6.示例
|
|
Array.prototype.join()
1.关键词:连接
2.是否修改原数组:false
3.返回值:
一个所有数组元素连接的字符串。如果 arr.length
为0,则返回空字符串
4.语法:
|
|
5.描述:
所有的数组元素被转换成字符串,再用一个分隔符将这些字符串连接起来。
如果一个元素为 undefined
或 null
,它会被转换为空字符串。
6.示例:
|
|
Array.prototype.push()
1.关键词:添加
2.是否修改原数组:true
3.返回值:
当调用该方法时,新的length
属性值将被返回。
4.语法:
|
|
5.描述:
push方法将值追加到数组中。
唯一的原生类数组(array-like)对象是Strings
,尽管如此,它们并不适用该方法,因为字符串是不可改变的。
6.示例
|
|
Array.prototype.some()
1.关键词:查找
2.是否修改原数组:false
3.返回值:
数组中有至少一个元素通过回调函数的测试就会返回**true
**;所有元素都没有通过回调函数的测试返回值才会为false
4.语法:
|
|
element
:数组中正在处理的元素。index
:可选,数组中正在处理的元素的索引值。array
:可选,几乎不用
5.描述:
some()
为数组中的每一个元素执行一次 callback
函数,直到找到一个使得 callback 返回一个“真值”(即可转换为布尔值 true 的值)。如果找到了这样一个值,some()
将会立即返回 true
。否则,some()
返回 false
。callback
只会在那些”有值“的索引上被调用,不会在那些被删除或从来未被赋值的索引上调用。
callback
被调用时传入三个参数:元素的值,元素的索引,被遍历的数组。
some()
被调用时不会改变数组。
6.示例
|
|
Array.prototype.sort()
1.关键词:排序
2.是否修改原数组:true
3.返回值:
排序后的数组。请注意,数组已原地排序,并且不进行复制。
4.语法:
|
|
compareFunction
可选
用来指定按某种顺序进行排列的函数。如果省略,元素按照转换为的字符串的各个字符的Unicode位点进行排序。
-
firstEl
第一个用于比较的元素。 -
secondEl
第二个用于比较的元素。
5.描述:
如果没有指明 compareFunction
,那么元素会按照转换为的字符串的诸个字符的Unicode位点进行排序。例如 “Banana” 会被排列到 “cherry” 之前。当数字按由小到大排序时,9 出现在 80 之前,但因为(没有指明 compareFunction
),比较的数字会先被转换为字符串,所以在Unicode顺序上 “80” 要比 “9” 要靠前。
如果指明了 compareFunction
,那么数组会按照调用该函数的返回值排序。即 a 和 b 是两个将要被比较的元素:
-
如果
compareFunction(a, b)
小于 0 ,那么 a 会被排列到 b 之前; -
如果
compareFunction(a, b)
等于 0 , a 和 b 的相对位置不变。备注: ECMAScript 标准并不保证这一行为,而且也不是所有浏览器都会遵守(例如 Mozilla 在 2003 年之前的版本); -
如果
compareFunction(a, b)
大于 0 , b 会被排列到 a 之前。 -
compareFunction(a, b)
必须总是对相同的输入返回相同的比较结果,否则排序的结果将是不确定的。
6.示例
|
|
Array.prototype.every()
1.关键词:测试,遍历
2.是否修改原数组:false
3.返回值:数组内全部成员都通过了测试,则返回true
,否则返回false
4.语法:
|
|
5.描述:
every
方法为数组中的每个元素执行一次 callback
函数,直到它找到一个会使 callback
返回falsy
的元素。如果发现了一个这样的元素,every
方法将会立即返回 false
。否则,callback
为每一个元素返回 true
,every
就会返回 true
。
若传入一个空数组,则直接返回true
6.示例:
|
|
Array.prototype.shift()
1.关键词:删除
2.是否修改原数组:true
3.返回值:返回删除的元素,如果数组为空则返回undefined
4.语法:
|
|
5.描述:
删除数组第一个元素,即索引为0的元素,并返回被移除的元素
6.示例
|
|
Array.prototype.pop()
1.关键词:删除
2.是否修改原数组:true
3.返回值:返回删除的元素,如果数组为空则返回undefined
4.语法:
|
|
5.描述:
删除并返回数组最后一个元素
6.示例
|
|
Array.prototype.slice()
1.关键词:截取
2.是否修改原数组:false
3.返回值:一个含有被提取元素的新数组
4.语法:
|
|
begin
可选,默认从0开始,如果是负数,表示从原数组的倒数第几个元素开始提取。如果大于原数组的长度,返回空数组;
end
可选,默认到原数组末尾。返回的数组中不包括指定位置的元素,如果是负数,表示在原数组中的倒数几个元素结束抽取,如果大于数组长度,也会一直提取到数组末尾。
5.描述:
slice
不会修改原数组,只会返回一个浅复制(如果改变两个数组任意一个,则另一个不会受影响)了原数组中部分元素的一个新数组。
6.示例:
|
|
Array.prototype.concat()
1.关键词:合并
2.是否修改原数组:false
3.返回值:合并后的新数组
4.语法:
|
|
5.描述:
将数组或值连接成新数组。如果省略了参数,则concat会返回一个它所调用的已存在的数组的浅拷贝(只会复制对象引用)。
6.示例:
|
|
Array.prototype.filter()
1.关键词:测试,筛选
2.是否修改原数组:false
3.返回值:一个新的,由通过测试的元素组成的新数组,可能为空数组
4.语法:
|
|
5.描述:
filter
为数组中的每个元素调用一次 callback
函数,并利用所有使得 callback
返回true
或等价于 true
(即除 false
、0
、""
、null
、undefined
和 NaN
以外皆为真值) 的值的元素创建一个新数组。
6.示例:
|
|
Array.prototype.splice()
1.关键词:删除,替换
2.是否修改原数组:true
3.返回值:由被删除的元素组成的一个数组。如果只删除了一个元素,则返回只包含一个元素的数组。如果没有删除元素,则返回空数组。
4.语法:
|
|
-
start
表示修改的开始位置(index)
,若大于数组长度,则从数组末尾开始添加内容;若为负值,则表示从数组末位开始的第几位(从1开始)
;如果负数的绝对值大于数组的长度,则表示开始位置为第0位。 -
deleteCount
可选,表示要移除的数组元素的个数,如果deleteCount
大于start
之后的元素的总数,则从start
后面的元素都将被删除(含第start
位);如果deleteCount
被省略了,或者它的值大于或者等于start
之后的所有元素的数量,那么start
之后数组的所有元素都会被删除;如果deleteCount
是 0 或者负数,则不移除元素。这种情况下,至少应添加一个新元素。 -
item1, item2, *...*
可选。要添加进数组的元素,从start
位置开始。如果不指定,则splice()
将只删除数组元素。
5.描述:
如果添加进数组的元素个数不等于被删除的元素个数,数组的长度会发生相应的改变。
6.示例:
|
|
Array.prototype.forEach()
1.关键词:遍历
2.是否修改原数组:depends
3.返回值:undefined
4.语法:
|
|
5.描述:
针对每一个元素执行提供的函数。forEach适合于你并不打算改变数据,而只是想用数据做一些事情:比如存入数据库或则打印出来。
6.示例:
|
|
Array.prototype.indexOf()
1.关键词:查找
2.是否修改原数组:false
3.返回值:索引位置或-1
4.语法:
|
|
searchElement
要查找的元素
fromIndex
可选,开始查找的位置,若是负值则从末尾开始抵消
5.描述:
每个元素实际上都做===
(strict equality)来判断
6.示例:
|
|
Array.prototype.lastIndexOf()
1.关键词:查找
2.是否修改原数组:false
3.返回值:数组中该元素最后一次出现的索引,如未找到返回-1
4.语法:
|
|
searchElement
被查找的元素。
fromIndex
可选,从此位置开始逆向查找。默认为数组的长度减 1(arr.length - 1
),即整个数组都被查找。如果该值大于或等于数组的长度,则整个数组会被查找。如果为负值,将其视为从数组末尾向前的偏移。即使该值为负,数组仍然会被从后向前查找。如果该值为负时,其绝对值大于数组长度,则方法返回 -1,即数组不会被查找
5.描述:
每个元素实际上都做===
(strict equality)来判断
6.示例:
|
|
Array.prototype.reverse()
1.关键词:反转
2.是否修改原数组:true
3.返回值:颠倒后的数组
4.语法:
|
|
5.描述:
reverse
方法颠倒数组中元素的位置,改变了数组,并返回该数组的引用
也可应用于类数组对象
6.示例:
|
|
Array.prototype.unshift()
1.关键词:添加
2.是否修改原数组:true
3.返回值:该数组的新长度
4.语法:
|
|
5.描述:
unshift()
方法将一个或多个元素添加到数组的开头,并返回该数组的新长度(该方法修改原有数组)。
unshift
特意被设计成具有通用性;这个方法能够通过call
或者apply
方法作用于类数组对象上。不过对于没有 length 属性(代表从0开始的一系列连续的数字属性的最后一个)的对象,调用该方法可能没有任何意义。
6.示例:
|
|
*Array.prototype.includes()
1.关键词:查找
2.是否修改原数组:false
3.返回值:Boolean
4.语法:
|
|
value
要查找的元素值(区分大小写)
fromIndex
可选,开始索引,若为负值,则按升序从 array.length + fromIndex
的索引开始搜 (即使从末尾开始往前跳 fromIndex
的绝对值个索引,然后往后搜寻)。formIndex
的不同情况见示例,默认为 0
5.描述:
用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回false。
对象数组不能使用,但适用于类对象数组
6.示例:
|
|
*Array.prototype.entries()
1.关键词:遍历,迭代器
2.是否修改原数组:false
3.返回值:返回一个Array迭代器,包含每个索引与对应值的键值对数组
4.语法:
|
|
5.描述:
iterator.next()
返回一个对象,对于有元素的数组,是next{ value: Array(2), done: false }
next.done
用于指示迭代器是否完成:在每次迭代时进行更新而且都是false,- 直到迭代器结束done才是true。
- next.value是一个
["key","value"]
的数组,是返回的迭代器中的元素值。
6.示例:
|
|
*Array.prototype.keys()
1.关键词:遍历,迭代器
2.是否修改原数组:false
3.返回值:返回数组索引的Array迭代器对象
4.语法:
|
|
5.描述:一旦没有可迭代的值,aKeys.next()就会返回一个value属性为undefined、done属性为true的对象
6.示例:
|
|
*Array.prototype.values()
1.关键词:遍历,迭代器
2.是否修改原数组:false
3.返回值:返回数组值的Array迭代器对象
4.语法:
|
|
5.描述:
6.示例:
|
|
*Array.from()
1.关键词:浅拷贝
2.是否修改原数组:false
3.返回值:一个新的数组实例
4.语法:
|
|
arrayLike
想要转换成数组的伪数组对象或可迭代对象。
mapFn
可选,如果指定了该参数,新数组中的每个元素会执行该回调函数。
thisArg
可选,执行回调函数 mapFn
时 this
对象。
5.描述:
Array.from()
可以通过以下方式来创建数组对象:
- 伪数组对象(拥有一个
length
属性和若干索引属性的任意对象) - 可迭代对象(可以获取对象中的元素,如 Map和 Set 等)
Array.from()
方法有一个可选参数 mapFn
,让你可以在最后生成的数组上再执行一次 map
方法后再返回。也就是说Array.from(obj, mapFn, thisArg)
就相当于 Array.from(obj).map(mapFn, thisArg),
6.示例:
|
|
*Array.of()
1.关键词:创建
2.是否修改原数组:false
3.返回值:一个新的数组实例
4.语法:
|
|
elements
任意个参数,将按顺序成为返回数组中的元素。
5.描述:
方法创建一个具有可变数量参数的新数组实例,而不考虑参数的数量或类型。
Array.of()
和 Array
构造函数之间的区别在于处理整数参数:
Array.of(7)
创建一个具有单个元素 7 的数组,而 Array(7)
创建一个长度为7的空数组(**注意:**这是指一个有7个空位(empty)的数组,而不是由7个undefined
组成的数组)。
6.示例:
|
|
Author gsemir
LastMod 2021-09-10