js数组中的所有方法

说明:这里总结了数组方法中的35种,本着严谨性来写这篇文章,表格整理来自于MDN文档,下面给出了相应实例,宗旨是为了快速找到方法的使用和作用

方法 原数组被修改 返回值 参数 作用
Array.from()   新的数组实例 3个参数(arrayLike,mapfn,thisArg) 从一个类似数组或可迭代对象创建一个新的,浅拷贝的数组实例
Array.isArray()   值是Array,返回ture,否则false 1个参数(obj) 确定传递的值是否是一个Array
Array.of()   新的数组实例 任意个参数(elementN) 创建一个具有可变数量参数的新数组实例,不考虑参数的数量或类
Array.prototype.at() 否 数组中与给定索引匹配的元素,超出索引返回undefined 1个参数(index),不传参时,默认为0 接收一个整数值并返回索引处的元素,允许负整数
Array.prototype.concat() 否 新的数组实例 任意个参数(valueN) 合并两个或多个数组
Array.prototype.copyWithin() 是 修改后的数组 3个参数(target,start,end) 将数组的一部分浅复制到同一数组中的另一位置,不修改数组长度
Array.prototype.entries() 否 新的迭代器对象  无参 返回的新的迭代器对象中包含数组中每个索引的键/值对
Array.prototype.every() 否 callback函数每次返回都为 truthy (除`false、0、""、null、undefined、和NaN`以外皆为真值),返回true,否则false 2个参数(callback(element, index, array),thisArg) 测试数组中所有元素是否都通过某个函数的测试
Array.prototype.fill() 是 修改后的数组 3个参数(value,start,end) 用一个固定值填充数组从开始到终止索引内的全部元素(不包括终止索引)
Array.prototype.filter() 否 通过测试的元素组成的新数组,没有元素通过返回空数组 2个参数(callback(element,index,array),thisArg)  创建新数组,包含通过函数测试的所有元素 
Array.prototype.find() 否 数组中第一个通过函数测试元素的值,没有则返回undefind 2个参数(callback(element,index,array),thisArg) 数组中第一个通过函数测试元素的值,否则返回undefined
Array.prototype.findIndex() 否  数组中第一个通过函数测试元素的索引,没有则返回-1 2个参数(callback(element,index,array),thisArg) 数组中第一个通过函数测试元素的索引,否则返回-1
Array.prototype.flat() 否  包含将数组与子数组中所有元素的新数组 1个参数(depth),默认为1 按照可指定的深度递归遍历数组,将所有元素与遍历的子数组中的元素合并为新数组
Array.prototype.flatMap() 否  新的数组,每个元素都是回调函数的结果,且结构深度depth值为1  2个参数(callback(currentValue,index,array),thisArg) 映射函数映射每个元素,将结果压缩成新数组,并且最后返回的数组展开一层数组
Array.prototype.forEach() 否  undefined  2个参数(callback(currentValue,index,array),thisArg) 对数组的每个元素执行一个给定的函数 
Array.prototype.includes() 否  布尔值,如果在数组中找到了传递的值,返回true,否则false  2个参数(valueToFind,fromIndex) 判断数组是否包含给定的值,包含返回true,否则false
Array.prototype.indexOf() 否  首个被找到的元素在数组中的索引位置,没有找到返回-1  2个参数(searchElement,fromIndex) 找到一个给定元素的第一个索引,不存在返回-1
Array.prototype.join() 否 由所有数组元素连接的字符串,如果长度为0,返回空字符串  1个参数(separator),默认由(,)分隔 将数组的所有元素连接成字符串并返回,数组只有一个值,那么不会使用分隔符
Array.prototype.keys() 否  新的数组迭代器对象  无参  包含每个索引键的Array Iterator对象
Array.prototype.lastIndexOf() 否  数组中该元素最后一次出现的索引,未找到返回-1  2个参数(searchElement,fromIndex) 返回给定元素在数组中的最后一个索引,从后面向前找,不存在返回-1
Array.prototype.map() 否  由原数组每个元素执行回调函数的结果组成的新数组  2个参数(callback(currentValue,index,array),thisArg)  创建新数组,结果是该数组中每个元素调用一次函数后的返回值 
Array.prototype.pop() 是 数组中删除的元素,数组为空返回undefined  无参  删除数组中最后一个元素,并返回该元素的值,同时更改数组的长度 
Array.prototype.push() 是  修改后数组的长度  任意参数(elementN)  将一个或多个元素添加到数组的末尾,并返回该数组的新长度
Array.prototype.reduce() 否  函数累计处理的结果 2个参数(callback(accumulator,currentValue,index,array),initialValue) 数组中的每个元素执行一次函数,将其结果汇总为单个返回值
Array.prototype.reduceRight() 否  函数累计处理的结果 2个参数(callback(accumulator,currentValue,index,array),initialValue) 接受一个函数作为累加器和数组的每个值(从右到左)将其减少为单个值
Array.prototype.reverse() 是 颠倒后的原数组 无参 将数组中元素的位置颠倒,并返回
Array.prototype.shift() 是 数组中删除的元素,数组为空返回undefined  无参  删除数组第一个元素,并返回该元素的值,数组长度被修改
Array.prototype.slice() 否 含有被提取元素的新数组 2个参数(begin,end)  返回一个由begin和end决定的原数组的浅拷贝(不包括end)
Array.prototype.some() 否 数组中有一个元素通过函数的测试返回true,都没有通过则返回false 2个参数(callback(element,index,array),thisArg)  测试数组中至少有一个元素通过函数测试
Array.prototype.sort() 是 排序后的数组 1个参数compareFunction(firstE1,secondE1) 用原地算法对数组的元素排序,并返回,默认顺序将元素转换为字符串,比较它们的UTF-16代码单元值序列时构建的
Array.prototype.splice() 是 被删除的元素组成的数组,只删除一个元素,返回只包含一个元素的数组,如果没有删除元素,则返回空数组 任意参数(start,deleteCount,item1,item2...),从第三个参数开始可以添加多个 通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容
Array.prototype.toLocaleString() 否 表示数组元素的字符串 2个参数(locales,options) 返回一个字符串表示数组中的元素。数组中的元素将使用各自的 toLocaleString 方法转成字符串
Array.prototype.toString() 否 表示指定的数组及其元素的字符串 无参 返回一个字符串,表示指定的数组及其元素
Array.prototype.unshift() 是  表示添加元素后的数组长度  任意参数(elementN)  将一个或多个元素添加到数组的开头,并返回该数组的新长度
Array.prototype.values() 否 新的数组迭代器对象 无参 返回新的Array Iterator对象,对象中包含数组的每个索引的值

██  --  静态方法  ██  --  查找类  ██  --  拼接、转换、扁平类  ██  --  增删改查类  ██  --  生成器(generator)类  ██  --  遍历类

方法详解

  • 静态方法

  1.from()  将一个伪数组(类数组)转换为真数组,从而可以使用数组中的方法

1 (function f() {
2     // 返回一个新数组,把类数组对象(arguments,nodeList)转换为真数组后才能使用数组中的方法,当传入第二个参数时,返回经过函数加工后的数组
3     const result = Array.from(arguments).reduce((prev, current) => prev + current)
4     const arr = [1,4,8]
5     const newArr = Array.from(arr, item => item * 2)
6     console.log(newArr)     // 返回[2, 8, 16]
7     // const result =  arguments.reduce((prev, current) => prev + current)      // 报错:TypeError
8     console.log(result)     // 9
9 })(1,3,5)

  2.isArray()  判断传递的参数是否是数组类型

1 console.log(Array.isArray({}))      // false
2 console.log(Array.isArray([1,3]))   // true
3 console.log(Array.isArray(NaN))     // false
4 // 数组比较的地址值的比较
5 console.log([] === [])              // false

  3.of()  创建一个新数组,值就是of方法的值(无论传递的是数量和类型)。修复了new Array创建数组,只传一个Number代表长度的问题

1 console.log(Array.of(4))        // [4]
2 console.log(Array.of(null))     // [null]
3 console.log(Array.of(4,"1"))    // [4, "1"]

 

  • 查找类

  4.at()  查找当前索引的值,超出索引返回undefined,可以传负整数

1 const arr = [5,2,4,8,9]
2 console.log(arr.at(-3))    // 4
3 console.log(arr.at(5))    // undefined

  5.find()  返回通过函数测试的第一个元素的值,都没通过返回undefined

1 const arr = [5,2,4,8,9]
2 console.log(arr.find(item => item > 5))     // 8
3 console.log(arr.find(item => item > 10))    // undefined

  6.findIndex()  返回通过函数测试的第一个值的索引,都没通过返回-1

1 const arr = [5,2,4,8,9]
2     const result = arr.find((item, index) => {
3         // 找到大于5的时候,退出,下标为3
4         console.log(index)  // 0,1,2,3
5         return item > 5
6     })
7 console.log(result)     // 8
8 console.log(arr.find(item => item > 10))    // undefined

  7.includes()  判断传递的值是否存在该数组中,存在返回true,不存在返回false

1 const arr = [5,2,4,8,9]
2 console.log(arr.includes(4))        // 返回true,第二个参数默认为0
3 console.log(arr.includes(9, 2))     // 返回true,第二个参数表示从第几个索引开始查找
4 console.log(arr.includes(4, -3))     // 返回true,第二个参数表示从倒数第三个查找,刚好找到

  8.indexOf()  通过传递的元素查找它所在的索引,找不到返回-1

1 const arr = [5,2,4,8,9]
2 console.log(arr.indexOf(4,-3))   // 2
3 console.log(arr.indexOf(8))   // 3
4 // 从倒数第二个索引开始查找,往后找没找到
5 console.log(arr.indexOf(2, -2))   // -1

  9.lastIndexOf()  通过传递的元素查找它最后一次出现的索引,找不到返回-1

1 const arr = [5,2,4,8,9,2,4,6]
2 // 这里-3代表从后往前找,所以开始就把-2地方的4忽略了,找到了索引为2的
3 console.log(arr.lastIndexOf(4,-3))  // 2
4 console.log(arr.lastIndexOf(8))     // 3
5 // 从-2开始,找到0 到 -2中的最后一个元素为2的索引
6 console.log(arr.lastIndexOf(2,-2))  // 5

 

  • 拼接、转换、扁平类

  10.concat()  合并数组,把传递的一个或多个元素与原数组合并,返回一个新数组

1 const arr = [5,2,4,8,9]
2 console.log(arr.concat([2,[7,6]]))          // (7) [5, 2, 4, 8, 9, 2, [7, 6]]
3 console.log(arr.concat([2,[7,6]], [3,7]))   // (9) [5, 2, 4, 8, 9, 2, [7, 6], 3, 7]

  11.flat()  将多维数组转换为一维数组

1 const arr = [1,3,[3,6,[6,8,[8,0]]]]
2 console.log(arr.flat(3))        // [1, 3, 3, 6, 6, 8, 8, 0]
3 console.log(arr.flat())         // [1, 3, 3, 6, [6, 8, [8, 0]]]
4 // 当不知道是几维数组,传入参数为"Infinity",无论是几维数组都会变为1维
5 console.log(arr.flat(Infinity)) // // [1, 3, 3, 6, 6, 8, 8, 0]

  12.flatMap()  使用映射函数映射每个元素,将结果压缩成一个新数组

1 const arr = [1,3,[3,6,[6,8,[8,0]]]]
2 // const result = arr.flatMap(item => item * 2)
3 // console.log(result)     // [2, 6, NaN]
4 const result = arr.flat(Infinity).flatMap(item => item * 2)
5 console.log(result)     // [2, 6, 6, 12, 12, 16, 16, 0]

  13.join()  将数组中的所有元素连接成一个字符串,元素为undefined和null时,会转换为空字符串

1 const arr = [1,3,[3,6,[6,8,[8,0]]]]
2 // console.log(arr.join())      // 1,3,3,6,6,8,8,0
3 // console.log(arr.join("-"))      // 1-3-3,6,6,8,8,0
4 console.log(arr.flat(Infinity).join("+"))       // 1+3+3+6+6+8+8+0

  14.toLocaleString()  返回一个格式化对象后的字符串,数组中的元素会各自调用自己的toLocaleString()转成字符串

1 const num = 111111111
2 console.log(num.toLocaleString())       // 111,111,111
3 // 格式化日期
4 console.log(new Date().toLocaleString('zh'))    // 2021/10/5 上午11:40:39
5 console.log({name: 'zcb', age: 18}.toLocaleString())    // [object Object]

  15.toString()  返回一个字符串,多维数组中的元素也会被迭代出来

1 const arr = [1,3,[3,6,[6,8,[8,0]]]]
2 // 由数组中每个元素的toString()返回值加上join方法连接而成
3 console.log(arr.toString())     // 1,3,3,6,6,8,8,0
4 // 数组与字符串相加时每个元素会自动调用toString方法
5 console.log(arr + ',*****')     // 1,3,3,6,6,8,8,0,*****

 

  • 增删改查类

  16.copyWithin()  将数组中的部分元素浅拷贝到指定的地方,会修改原来的数组

1 const arr = [5,2,4,8,9,6,3,6,3]
2 // 把索引[4,6)的元素拷贝到索引为0的位置,也就是 9 和 6 两个元素放到 索引 0,1的位置上
3 // console.log(arr.copyWithin(0,4,6))  // [9, 6, 4, 8, 9, 6, 3, 6, 3]
4 // 9 和 6 放到从最后开始的位置
5 // console.log(arr.copyWithin(-2,4,6))  // [5, 2, 4, 8, 9, 6, 3, 9, 6]
6 // console.log(arr.copyWithin(0,6))    // [3, 6, 3, 8, 9, 6, 3, 6, 3]
7 console.log(arr.copyWithin(4))      // [5, 2, 4, 8, 5, 2, 4, 8, 9]

  17.fill()  用一个固定值来填充从索引开始到结束位置,可用于替换数组中的某个元素

1 const arr = [5,2,4,8,9,6,3,6,3]
2 // 把索引为[0,3)地方的元素被5填充
3 // console.log(arr.fill(5,0,3))    // [5, 5, 5, 8, 9, 6, 3, 6, 3]
4 // console.log(arr.fill(5,-2))    // [5, 2, 4, 8, 9, 6, 3, 5, 5]
5 // 从-1到-3开始填充,不包含-1
6 console.log(arr.fill(5,-3,-1))    // [5, 2, 4, 8, 9, 6, 5, 5, 3]
7 // console.log(arr.fill(null))    // [null, null, null, null, null, null, null, null, null]

  18.pop()  删除数组中的最后一个元素,并返回这个元素

1 const arr = ['tom','vray','ft','laowang','express']
2 console.log(arr.pop())      // express
3 console.log(arr)            // ['tom', 'vray', 'ft', 'laowang']

  19.push()  添加一个或多个元素到数组末尾,并返回数组新的长度

1 const arr = ['tom','vray','ft','laowang','express']
2 console.log(arr.push('verse', 'love'))      // 7
3 console.log(arr)        // ['tom', 'vray', 'ft', 'laowang', 'express', 'verse', 'love']
4 // console.log(arr.push('sym'))    // 6
5 // console.log(arr)    // ['tom', 'vray', 'ft', 'laowang', 'express', 'sym']

  20.reverse()  颠倒数组中元素的位置,第一个为最后一个,最后一个为第一个

1 const arr = ['tom','vray','ft','laowang','express']
2 // 返回颠倒后的数组,会修改原数组
3 console.log(arr.reverse())      // ['express', 'laowang', 'ft', 'vray', 'tom']

  21.shift()  删除数组的第一个元素,并返回这个元素

1 const arr = ['tom','vray','ft','laowang','express']
2 console.log(arr.shift())    // tom
3 console.log(arr)    // ['vray', 'ft', 'laowang', 'express']

  22.slice()  将数组的一部分元素浅复制存入新的数组对象,通常用于截取数组的部分元素

1 const arr = [5,2,4,8,9,6,3,6,3]
2 console.log(arr.slice(3))   // [8, 9, 6, 3, 6, 3]
3 // 截取索引[3,5)位置的元素,不包含5
4 console.log(arr.slice(3, 5))   // [8, 9]
5 console.log(arr.slice(-3))   // [3, 6, 3]

  23.sort()  对数组的元素进行排序

1 const arr = [5,2,4,8,9,12,3,34,3]
2 // 按照提供的函数进行排序,升序
3 console.log(arr.sort((a,b) => a - b))   // [2, 3, 3, 4, 5, 8, 9, 12, 34]
4 // 默认按照转换为的字符串的诸个字符的Unicode位点进行排序
5 console.log(arr.sort())     // [12, 2, 3, 3, 34, 4, 5, 8, 9]
6 const strArr = ['tom','vray','Ft','laowang','express']
7 console.log(strArr.sort())      // ['Ft', 'express', 'laowang', 'tom', 'vray']

  24.splice()  删除、替换旧元素和在指定位置添加新元素

 1 const arr = ['a', 'b', 'c', 'd', 'e']
 2 // 从索引2开始的地方添加一个元素
 3 // arr.splice(2,0, 'a')
 4 // console.log(arr)    // ['a', 'b', 'a', 'c', 'd', 'e']
 5 // 从索引2的地方删除一个元素再添加一个元素
 6 // arr.splice(2,1, 'a')
 7 // console.log(arr)    // ['a', 'b', 'a', 'd', 'e']
 8 // 删除索引2的一个元素
 9 arr.splice(2,1)
10 console.log(arr)    // ['a', 'b', 'd', 'e']

  25.unshift()  添加一个或多个元素到数组开头,并返回数组新的长度

1 const arr = [5,2,4,8,9,12,3,34,3]
2 console.log(arr.unshift(2))     // 10
3 console.log(arr.unshift([4,3]))     // 11
4 console.log(arr)     // [[4, 3], 2, 5, 2, 4, 8, 9, 12, 3, 34, 3]

 

  • 生成器(generator)类

  26.entries()  返回一个迭代器对象,该对象包含数组中每个索引的键/值对,可以用for...of进行遍历

 1 const arr = ['a', 'b', 'c', 'd', 'e']
 2 const iterator = arr.entries()
 3 console.log(iterator)  // Array Iterator
 4 console.log(iterator.next().value)  // [0, 'a']
 5 console.log(iterator.next().value)  // [1, 'b']
 6 console.log(iterator.next().value)  // [2, 'c']
 7 console.log(iterator.next().value)  // [3, 'd']
 8 console.log(iterator.next().value)  // [4, 'e']
 9 console.log(iterator.next().value)  // undefined,迭代器处于数组末尾时, 再迭代就会返回undefined
10 // for (const ikey of iterator) {
11 //     console.log(ikey,iterator[ikey])    // 打印数组中每个索引的键/值对
12 // }

  27.keys()  返回一个迭代器对象,该对象包含数组的每个索引的键,可以用for...of遍历

 1 const arr = ['a', 'b', 'c']
 2 const iterator = arr.keys()
 3 console.log(iterator)  // Array Iterator
 4 console.log(iterator.next().value)  // 0
 5 console.log(iterator.next().value)  // 1
 6 console.log(iterator.next().value)  // 2
 7 console.log(iterator.next().value)  // undefined,迭代器处于数组末尾时, 再迭代就会返回undefined
 8 // for (const ikey of iterator) {
 9 //     console.log(ikey,iterator[ikey])    // 打印数组中每个索引的键
10 // }

  28.values()  返回一个迭代器对象,该对象包含数组的每个索引的值,可以用for...of遍历

 1 const arr = ['a', 'b', 'c']
 2 const iterator = arr.values()
 3 console.log(iterator)  // Array Iterator
 4 console.log(iterator.next().value)  // a
 5 console.log(iterator.next().value)  // b
 6 console.log(iterator.next().value)  // c
 7 console.log(iterator.next().value)  // undefined,迭代器处于数组末尾时, 再迭代就会返回undefined
 8 // for (const ikey of iterator) {
 9 //     console.log(ikey,iterator[ikey])    // 打印数组中每个索引的值
10 // }

 

  • 遍历类

  29.every()  测试数组中所有的元素是否都能通过函数测试,全通过返回true,有一个没通过返回false

1 const arr = [5,2,4,8,9,6,3,6,3]
2 console.log(arr.every(item => item > 5))    // false
3 console.log(arr.every(item => item >= 2))    // true
4 // 当数组为空数组时,一切情况下都会返回true
5 console.log([].every(item => item >= 2))    // true

  30.filter()  将数组中通过函数测试的元素组成新的数组,其实就是一个过滤器,筛选掉不符合的元素

1 const arr = [5,2,4,8,9,6,3,6,3]
2 // console.log(arr.filter(item => item > 5))   // [8, 9, 6, 6]
3 // 数组去重:每次遍历查找元素所在下标是否和参数index相等,因indexOf只返回找到第一个元素的小标,所以后面重复的不会被找到
4 // console.log(arr.filter((item, index) => arr.indexOf(item) === index))   // [5, 2, 4, 8, 9, 6, 3]
5 arr.push(null, '', undefined, ' ')
6 // 去掉undefined、null和空字符串,truthy(真值)指的是在布尔值上下文中,转换后的值为真的值。所有值都是真值,除非它们被定义为 假值(即除 false、0、""、null、undefined 和 NaN 以外皆为真值)
7 console.log(arr.filter(item => item))   // [5, 2, 4, 8, 9, 6, 3, 6, 3, ' ']

  31.forEash()  数组的每项元素都执行一次传入的函数,返回值为undefined,通常需要遍历操作数组

1 const arr = ['a', 'b', 'c']
2 arr.forEach((item, index) => console.log(item, index))      // 打印值和键 a和0  b和1   c和2

  32.map()  使用函数处理数组中的每个元素,返回处理后的新数组

 1 const arr = ["1", "2", "3"]
 2 /*
 3     首先map里的回调函数可以接收3个参数(currentValue,index,array),parseInt可以接收2个参数(string,radix)
 4     这里map的回调函数就相当于传了(string, radix),radix表示其他进制转换为十进制的基数,范围在2~36,不在范围内返回NaN
 5     第一次进入,因为radix为0,这里会根据string来判定,有3种情况
 6         1、如果string以0x开头,string的其余部分会当作16进制解析
 7         2、如果string以0开头,radix被假定为8(八进制)或10(十进制),版本为ECMAScript 5 应该使用 10 (十进制)
 8         3、string以任何数开头,radix以10进制解析
 9     所以当第一次进入时:结果为10进制的1
10     第二次进入,索引为1,不在radix范围,返回NaN
11     第三次进入,索引为2,把3当作2进制解析,但二进制没有3,所以返回NaN
12  */
13 console.log(arr.map(parseInt))  // [1, NaN, NaN]
14 const arrNum = [1,3,9]
15 console.log(arr.map(item => item * 2))  // [2, 4, 6]

  33.reduce()  接收一个函数作为累加器,数组中的每个值开始合并,返回合并后的值

 1 const arr = [1, 2, 3, 4]
 2 // console.log(arr.reduce((acc, cur) => acc + cur))    // 10
 3 // reduce有两个参数回调函数和初始值,10为开始累加的初始值
 4 console.log(arr.reduce((acc, cur) => acc + cur, 10))    // 20
 5 // 5的阶乘
 6 const arrNum = []
 7 for (let i = 1; i < 6; i++) {
 8     arrNum.push(i)
 9 }
10 console.log(arrNum.reduce((acc, cur) => acc * cur))    // 120
11 // 计算字符出现的次数
12 const str = "abcdaedfbcdba";
13 // 先使用split切割
14 const strCount = str.split("").reduce((acc, cur) => {
15     // 以第一个进入的a为例,如果没存在里面会返回undefined,这时初始化字符的值,存在的时候加1,第一二个acc[cur]代表键,第三个代表值
16     acc[cur] = acc[cur] === undefined ? 1 : acc[cur]++
17     return acc
18 }, {})
19 console.log(strCount)   // {a: 3, b: 3, c: 2, d: 3, e: 1, …}

  34.reduceRight()  接收一个函数作为累加器,数组中的每个值开始合并(从右到左)

1 const arr = [1, 2, 3, 4]
2 // 这时累加器是从右往左开始累加4+3+2+1
3 console.log(arr.reduceRight((acc, cur) => acc + cur))    // 10
4 // reduce有两个参数回调函数和初始值,100为开始累减的初始值,其使用方法与reduce基本相似
5 console.log(arr.reduceRight((acc, cur) => acc - cur, 100))    // 90

  35.some()  测试数组中的元素是否通过函数测试,有一个通过返回true,且不再继续执行,全没通过返回false

1 const arr = [5,2,4,8,9,6,3,6,3]
2 console.log(arr.some(item => item > 5))     // true
3 console.log(arr.some(item => item > 10))     // false
4 // 当数组为空数组时,一切情况下都会返回false,与every刚好相反。every(全真为真,一假即假),some(全假为假,一真即真)
5 console.log([].some(item => item > 10))     // false

 

  • 这里还有3种方法Array.prototype[@@unscopables]、get Array[@@iterator]、Array.prototype.toSource(),其中toSource已经不再支持,运行时会报类型错误,其他两种也不常用,如果想了解可以直接参考MDN即可。最后,本人才疏学浅,如有错误,还望留言指正!

posted @ 2021-10-06 15:22  love诗  阅读(483)  评论(0)    收藏  举报