end(可选):到该位置前停止读取数据,默认等于数组长度。使用负数可从数组结尾处规定位置。
[1, 2, 3, 4, 5].copyWithin(0, -2, -1) // [4, 2, 3, 4, 5] var a=['a','b','c','d','e','f','g','h','i','j'] // 2位置开始被替换,3位置开始读取要替换的 5位置前面停止替换 a.copyWithin(2,3,5) // ["a","b","d","e","e","f","g","h","i","j"]这里可以总结下:
替换前后数组的长度保持不变;
读取数据在终止位置的前一个位置停止,并且保存这个位置的数据不动
读取出来了多少数据,就需要在前面按顺序替换掉多少数据。
上面大类属于可以改变原数组的实例方法,下面一大类当然就是不改变原数组了。
不改变原数组(8个) slice(start, end) 截取数组片段,返回新数组参数:
start:(可选)规定从何处开始选取,负数表示从数组尾部算起
end: (可选)没指定则一直截取到数组最后一个元素,包括最后一个。指定了则截取到指定位置前一个元素。
[1, 2, 3, 4].slice() // [1, 2, 3, 4] [1, 2, 3, 4].slice(1) // [2, 3, 4] [1, 2, 3, 4].slice(1, 3) // [2, 3] join(str) 按照连接符将数组连接成字符串并返回字符串参数:
没有参数: 则使用 , 连接
有参数: 按照参数指定连接符连接
let a= ['hello','world'] let str=a.join() // 'hello,world' let str2=a.join('+') // 'hello+world'特别注意:当原始数组中含有对象时,使用 join() 方法连接时会把对象转成 [object Object]字符串,看下面:
var b = [{name: 'pubdreamcc', age: 24}, 'test'] b.join() // [object Object],test cancat(item1,item2...) 合并多个数组并返回参数:
可以是数组对象:等待合并的数组
也可以是具体的值(元素): 等待合并的元素
var a = [1, 2, 3] var b = [4, 5, 6] a.concat(b) // [1, 2, 3, 4, 5, 6] a.concat(4, 5, 6) // [1, 2, 3, 4, 5, 6] toLocaleString() 数组转字符串参数: 无
该方法同样也是数组转字符串,是将数组中每一个元素调用自身的toLocaleString() 方法后用 , 连接得到的字符串。
可以理解为先把数组中每个元素都调用下 toLocaleString() 方法,再把得到的结果数组调用 join() 方法。
let a=[{name:'pubdreamcc'},24,'cc',new Date()] a.toLocaleString() // [object Object],24,cc,2019/7/18 下午1:52:20 toString() 数组转字符串这个方法应该比较熟悉,它是定义在 Object 原型上面的一个方法,用来把一个对象转成字符串,在这里其实同 join(无参数) 方法效果一样。
实际开发中不推荐使用。
indexOf(item, start) 查找数组某个元素并返回其第一次出现位置下标参数:
item(必需): 需要查找的元素值
start(可选): 规定在数组中开始检索的位置(0-array.length)
如果没找到,返回 -1
var a = [1, 2, 1] a.indexOf() // -1 a.indexOf(1) // 0 a.indexof('1') // -1注意: indexOf()不能识别NaN, 因为 NaN 与任何数不相等,包括自身。
lastIndexOf(item, fromIndex) 查找数组某个元素并返回其最后一次出现位置下标该方法与 indexOf() 恰好相反,查找不到同样返回 -1
参数:
item(必需): 被查找的元素
fromIndex(可选): 逆向查找开始位置,默认值数组的长度-1,即查找整个数组。
let a=['cc',4,'pubdreamcc',1,2,'pubdreamcc',3,4,5,'pubdreamcc'] // 数组长度为10 // let b=a.lastIndexOf('pubdreamcc',4) // 从下标4开始往前找 返回下标2 // let b=a.lastIndexOf('pubdreamcc',100) // 大于或数组的长度 查找整个数组 返回9 // let b=a.lastIndexOf('pubdreamcc',-11) // -1 数组不会被查找 let b=a.lastIndexOf('pubdreamcc',-9) // 从第二个元素4往前查找,没有找到 返回-1下面这个方法是 ES7 中新增
includes(item, fromIndex) 查找数组是否包含某个元素返回布尔参数:
item (必需):要查找的元素
fromIndex (可选): 默认值为0,参数表示搜索的起始位置,接受负值。正值超过数组长度,数组不会被搜索,返回false。负值绝对值超过长数组度,重置从0开始搜索。
注意: includes()方法可以检测 NaN
let a=['cc','pubdreamcc',1,NaN] // let b=a.includes(NaN) // true 识别NaN // let b=a.includes('pubdreamcc',100) // false 超过数组长度 不搜索 // let b=a.includes('pubdreamcc',-3) // true 从倒数第三个元素开始搜索 // let b=a.includes('pubdreamcc',-100) // true 负值绝对值超过数组长度,搜索整个数组总结完了数组的基本两大类方法后,接下来我们开始上数组的遍历方法。
遍历方法 (12个)数组的遍历也是非常重要,在实际项目开发中用的很多,不同的场景使用不同的遍历方法可以加快我们开发速度。
数组的遍历并不会改变原始数组。
forEach(func, thisValue) 遍历数组,为每一项执行一次回调函数参数:
func(必需):指定的回调函数
thisValue(可选):当执行回调函数时this绑定对象的值,默认值为undefined
array.forEach((value, index, arr) => {}, thisValue)关于 forEach() 这里需要注意的几点:
无法中途退出循环,只能用return退出本次回调,进行下一次回调。
它总是返回 undefined值,即使你return了一个值。