数组方法不混淆 (2)

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了一个值。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zywwwy.html