关于数组(array)
好的,数组大爷,我错了!!!
怎么肥事呢?原因是我今晚在去重的时候犯了一个错误,用splice()时候用成这个样子了
![](https://img.haomeiwen.com/i12905121/a6aa35ca1d7560df.png)
具体代码我记不住了,犯了这样一个错误。所以总结一下:关于array那些事;
好的,我们开始说事;先来介绍一下array;
array是什么呢?是数组,ok,也是一个对象,不然array怎么可能会有方法呢!array是怎么出来的,换句话说,array的出现解决了什么需求?是这样的,函数在return时候,只能return一个值,而,有些时候我们需要return很多东西,比如string,比如集合什么的。再者,比如,我们下存储一些比较复杂的变量的时候,可能会var很多个变量,这导致,代码长度越来越长,让人难以维护。所以一个比较牛的东西就出现了,那就是array,一个让人脑阔疼的东西。
在w3c上面是这么定义array的:Array 对象用于在单个的变量中存储多个值。ok!
来我们看看怎么创建array对象,也就是数组,我和你们讲array不是一种数据类型,它是对象,他的数据类型也是对象。
no.1
![](https://img.haomeiwen.com/i12905121/ceb33f6c12b3fb53.png)
![](https://img.haomeiwen.com/i12905121/684175ef72a8d88b.png)
![](https://img.haomeiwen.com/i12905121/9300e38a95aa21a5.png)
上面这张图,证明array是对象;
no.2
![](https://img.haomeiwen.com/i12905121/22867ec4befd055e.png)
![](https://img.haomeiwen.com/i12905121/b6840304444af17e.png)
no.3
![](https://img.haomeiwen.com/i12905121/109d15173eaa3fdb.png)
![](https://img.haomeiwen.com/i12905121/a5071189615e0cc1.png)
no.4
![](https://img.haomeiwen.com/i12905121/c6e4db4f00a40dc7.png)
![](https://img.haomeiwen.com/i12905121/43b597caeda960b8.png)
no.5
![](https://img.haomeiwen.com/i12905121/eb27727a2dfebd56.png)
![](https://img.haomeiwen.com/i12905121/487f9c3a0dc78a80.png)
ok,可见这种方式和下面一种方式并没有什么差别!
no.6
![](https://img.haomeiwen.com/i12905121/ba8d50d7be363e37.png)
![](https://img.haomeiwen.com/i12905121/53427b65ebc8db5c.png)
好的,这就是数组创建的方式!!!!!
关于数组对象的方法:
Array.from() 方法从一个类似数组或可迭代对象中创建一个新的数组实例。
![](https://img.haomeiwen.com/i12905121/b1723c90a4fe12a1.png)
![](https://img.haomeiwen.com/i12905121/b98b520b435eafe2.png)
简单的说就是把可以转化为数组的东西,转化为数组。
Array.isArray() 用于确定传递的值是否是一个 Array。
![](https://img.haomeiwen.com/i12905121/c957e21b97ac296e.png)
![](https://img.haomeiwen.com/i12905121/949457d2aef7582a.png)
Array.observe() ------------------------ 已经废弃
Array.observe() 方法用于异步监视数组发生的变化,类似于针对对象的 Object.observe()。当数组的值发生变化时,它按发生顺序提供了一个变化流。与 Object.observe() 类似,它由如下可接受的变化类型列表["add"、"update"、"delete"、"splice"]触发
Array.of()方法创建一个具有可变数量参数的新数组实例,而不考虑参数的数量或类型。
简单来说,就是把放到of里的参数转化为一个数组,区别与 Array();注意一个是把7当成长度,一个是把7当成元素。
![](https://img.haomeiwen.com/i12905121/b7e154228f4e703b.png)
![](https://img.haomeiwen.com/i12905121/22731232afa113ad.png)
concat()方法用于合并两个或多个数组。concat不会更改现有数组,而是返回一个新数组。
![](https://img.haomeiwen.com/i12905121/548ed89eaeb7adc5.png)
![](https://img.haomeiwen.com/i12905121/d6f98e9df77ebd27.png)
copyWithin() 方法浅复制数组的一部分到同一数组中的另一个位置,并返回它,而不修改其大小。
arr.copyWithin(target[,start[,end]])
target---复制序列到该位置。如果是负数,target将从末尾开始计算。
注意:如果target大于等于arr.length,将会不发生拷贝。如果target在start之后,复制的序列将被修改以符合arr.length。
start---开始复制元素的起始位置。如果是负数,start将从末尾开始计算。
注意:如果start被忽略,copyWithin将会从0开始复制。
end---开始复制元素的结束位置。copyWithin将会拷贝到该位置,但不包括end这个位置的元素。如果是负数,end将从末尾开始计算。
注意:如果end 被忽略,copyWithin 将会复制到arr.length。
![](https://img.haomeiwen.com/i12905121/6e05ffd894ff6bf8.png)
![](https://img.haomeiwen.com/i12905121/c380810a1d9b188e.png)
every()方法测试数组的所有元素是否都通过了指定函数的测试。任何一个不通过都返回false
![](https://img.haomeiwen.com/i12905121/bf3600876143116a.png)
![](https://img.haomeiwen.com/i12905121/5bd6c3bb37b943ed.png)
用某个元素,填充数组;
fill(curr ,star,end)
curr---某个元素
star---开始位置
end---结束位置
![](https://img.haomeiwen.com/i12905121/21efc06a96084655.png)
![](https://img.haomeiwen.com/i12905121/0b132d0f620c30f1.png)
filter() 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。换句话说就是这个函数返回一个数组,一个通过你提供的函数的测试的元素。
![](https://img.haomeiwen.com/i12905121/d72910d55df64fa9.png)
![](https://img.haomeiwen.com/i12905121/5bc5396a9f433aec.png)
find()方法返回数组中满足提供的测试函数的第一个元素的值。否则返回undefined。
![](https://img.haomeiwen.com/i12905121/0d5a55f97c9c07c6.png)
![](https://img.haomeiwen.com/i12905121/9d32d1354c1b664f.png)
findIndex()方法返回数组中满足提供的测试函数的第一个元素的索引。否则返回-1。
![](https://img.haomeiwen.com/i12905121/bf744e20c8f4f63f.png)
![](https://img.haomeiwen.com/i12905121/15aeb05ff6383ef6.png)
forEach()方法对数组的每个元素执行一次提供的函数,也就是遍历函数,这个和for 循环 或者for in 循环没有差别,没有返回值,但是可以在forEach中做事;
![](https://img.haomeiwen.com/i12905121/8c503e65696e2ee5.png)
![](https://img.haomeiwen.com/i12905121/6546dd4029086c23.png)
indexOf()方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。
![](https://img.haomeiwen.com/i12905121/94517514de5a5b55.png)
![](https://img.haomeiwen.com/i12905121/2c75012f9e0ac6cc.png)
将数组的元素以某个符号连接起来成为一个字符串,返回值是字符串;
![](https://img.haomeiwen.com/i12905121/c68e2ff7673ddc5d.png)
![](https://img.haomeiwen.com/i12905121/0154365b0ab73367.png)
从数组最后一个元素开始寻找给定元素第一次出现的地方,并返回给定元素的下标
![](https://img.haomeiwen.com/i12905121/114bcdfd9feda122.png)
![](https://img.haomeiwen.com/i12905121/255f94450292702b.png)
遍历数组,返回数组(数组长度和源数组一样),其返回的数组是传入函数处理的结果
![](https://img.haomeiwen.com/i12905121/a27af94a386d45e7.png)
![](https://img.haomeiwen.com/i12905121/53c506795a01854a.png)
pop()方法从数组中删除最后一个元素,并返回该元素的值。此方法更改数组的长度。
![](https://img.haomeiwen.com/i12905121/8849687069f707b8.png)
![](https://img.haomeiwen.com/i12905121/3f7580bf4810e25e.png)
往数组后面添加元素
![](https://img.haomeiwen.com/i12905121/932068fe72848a3e.png)
![](https://img.haomeiwen.com/i12905121/5be34e649ae6e6f7.png)
逆序,反转
![](https://img.haomeiwen.com/i12905121/adae0992aa0c7453.png)
![](https://img.haomeiwen.com/i12905121/e64623e92a75bafa.png)
方法从数组中删除第一个元素,并返回该元素的值。此方法更改数组的长度。
![](https://img.haomeiwen.com/i12905121/73780b5c34b3b8c2.png)
![](https://img.haomeiwen.com/i12905121/ee3a903c84c39a04.png)
截取元素,返回截取元素的数组,但是不改变原数组
![](https://img.haomeiwen.com/i12905121/8925c423aff01cf8.png)
![](https://img.haomeiwen.com/i12905121/ee2d7058efdbca1d.png)
some()方法测试数组中的某些元素是否通过由提供的函数实现的测试。通过返回true,否则返回false;
![](https://img.haomeiwen.com/i12905121/f77544afe22008d1.png)
![](https://img.haomeiwen.com/i12905121/3a6c6616f92b4da4.png)
排序函数
升序传入函数function(a,b){return a-b};
降序传入函数function(a,b){return b-a};
其中a,b相当于数组的相邻两个元素;
![](https://img.haomeiwen.com/i12905121/abeb4619ffd50dfc.png)
![](https://img.haomeiwen.com/i12905121/0729864c27a5629f.png)
splice() 方法通过删除现有元素和/或添加新元素来更改一个数组的内容
array.splice(start[,deleteCount[,item1[,item2[,...]]]]);
start
指定修改的开始位置(从0计数)。如果超出了数组的长度,则从数组末尾开始添加内容;如果是负值,则表示从数组末位开始的第几位(从-1计数);如果负数的绝对值大于数组的长度,则表示开始位置为第0位。
deleteCount可选
整数,表示要移除的数组元素的个数。如果 deleteCount 是 0,则不移除元素。这种情况下,至少应添加一个新元素。如果 deleteCount 大于start 之后的元素的总数,则从 start 后面的元素都将被删除(含第 start 位)。
如果deleteCount被省略,则其相当于(arr.length - start)。
item1, item2,...可选
要添加进数组的元素,从start 位置开始。如果不指定,则splice() 将只删除数组元素。
splice方法使用deleteCount参数来控制是删除还是添加:
start参数是必须的,表示开始的位置(从0计数),如:start=0从第一个开始;start>= array.length-1表示从最后一个开始。
①、从start位置开始删除[start,end]的元素。
array.splice(start)
②、从start位置开始删除[start,Count]的元素。
array.splice(start, deleteCount)
③、从start位置开始添加item1, item2, ...元素。
array.splice(start,0, item1, item2, ...)
返回值 由被删除的元素组成的一个数组。如果只删除了一个元素,则返回只包含一个元素的数组。如果没有删除元素,则返回空数组。
![](https://img.haomeiwen.com/i12905121/f720258a27613464.png)
![](https://img.haomeiwen.com/i12905121/a8488aab149468b8.png)
Array.prototype.toLocaleString()
转换为本地字符
![](https://img.haomeiwen.com/i12905121/188189995f2d8f3b.png)
![](https://img.haomeiwen.com/i12905121/8bc77d3b7ab566a1.png)
转换为字符串
![](https://img.haomeiwen.com/i12905121/dd97999748d7e96f.png)
![](https://img.haomeiwen.com/i12905121/a51a1d40574acb03.png)
unshift()方法将一个或多个元素添加到数组的开头,并返回新数组的长度。
![](https://img.haomeiwen.com/i12905121/de8080d22453a091.png)
![](https://img.haomeiwen.com/i12905121/e6a03eb8b53c9800.png)