好的,数组大爷,我错了!!!
怎么肥事呢?原因是我今晚在去重的时候犯了一个错误,用splice()时候用成这个样子了
具体代码我记不住了,犯了这样一个错误。所以总结一下:关于array那些事;
好的,我们开始说事;先来介绍一下array;
array是什么呢?是数组,ok,也是一个对象,不然array怎么可能会有方法呢!array是怎么出来的,换句话说,array的出现解决了什么需求?是这样的,函数在return时候,只能return一个值,而,有些时候我们需要return很多东西,比如string,比如集合什么的。再者,比如,我们下存储一些比较复杂的变量的时候,可能会var很多个变量,这导致,代码长度越来越长,让人难以维护。所以一个比较牛的东西就出现了,那就是array,一个让人脑阔疼的东西。
在w3c上面是这么定义array的:Array 对象用于在单个的变量中存储多个值。ok!
来我们看看怎么创建array对象,也就是数组,我和你们讲array不是一种数据类型,它是对象,他的数据类型也是对象。
no.1
上面这张图,证明array是对象;
no.2
no.3
no.4
no.5
ok,可见这种方式和下面一种方式并没有什么差别!
no.6
好的,这就是数组创建的方式!!!!!
关于数组对象的方法:
Array.from() 方法从一个类似数组或可迭代对象中创建一个新的数组实例。
简单的说就是把可以转化为数组的东西,转化为数组。
Array.isArray() 用于确定传递的值是否是一个 Array。
Array.observe() ------------------------ 已经废弃
Array.observe() 方法用于异步监视数组发生的变化,类似于针对对象的 Object.observe()。当数组的值发生变化时,它按发生顺序提供了一个变化流。与 Object.observe() 类似,它由如下可接受的变化类型列表["add"、"update"、"delete"、"splice"]触发
Array.of()方法创建一个具有可变数量参数的新数组实例,而不考虑参数的数量或类型。
简单来说,就是把放到of里的参数转化为一个数组,区别与 Array();注意一个是把7当成长度,一个是把7当成元素。
concat()方法用于合并两个或多个数组。concat不会更改现有数组,而是返回一个新数组。
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。
every()方法测试数组的所有元素是否都通过了指定函数的测试。任何一个不通过都返回false
用某个元素,填充数组;
fill(curr ,star,end)
curr---某个元素
star---开始位置
end---结束位置
filter() 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。换句话说就是这个函数返回一个数组,一个通过你提供的函数的测试的元素。
find()方法返回数组中满足提供的测试函数的第一个元素的值。否则返回undefined。
findIndex()方法返回数组中满足提供的测试函数的第一个元素的索引。否则返回-1。
forEach()方法对数组的每个元素执行一次提供的函数,也就是遍历函数,这个和for 循环 或者for in 循环没有差别,没有返回值,但是可以在forEach中做事;
indexOf()方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。
将数组的元素以某个符号连接起来成为一个字符串,返回值是字符串;
从数组最后一个元素开始寻找给定元素第一次出现的地方,并返回给定元素的下标
遍历数组,返回数组(数组长度和源数组一样),其返回的数组是传入函数处理的结果
pop()方法从数组中删除最后一个元素,并返回该元素的值。此方法更改数组的长度。
往数组后面添加元素
逆序,反转
方法从数组中删除第一个元素,并返回该元素的值。此方法更改数组的长度。
截取元素,返回截取元素的数组,但是不改变原数组
some()方法测试数组中的某些元素是否通过由提供的函数实现的测试。通过返回true,否则返回false;
排序函数
升序传入函数function(a,b){return a-b};
降序传入函数function(a,b){return b-a};
其中a,b相当于数组的相邻两个元素;
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, ...)
返回值 由被删除的元素组成的一个数组。如果只删除了一个元素,则返回只包含一个元素的数组。如果没有删除元素,则返回空数组。
Array.prototype.toLocaleString()
转换为本地字符
转换为字符串
unshift()方法将一个或多个元素添加到数组的开头,并返回新数组的长度。