js

js中 类数组对象转化成数组对象的几种方法

2021-04-01  本文已影响0人  奕生奕世_3503

Array.prototype.slice.call(arguments)

原理是数组的slice()方法可以从已有数组中返回一个新数组,它可以接受两个参数arr.slice(start,end),第一个参数规定从何处开始选取,第二个参数表示从何处选取结束,如果不传参将返回原数组的一个副本,但该方法不会修改原数组,而是返回截取的新数组,根据这个就可以将类数组转化成数组对象啦!

Array.prototype.splice.call(arguments,0)

这种方式的原理和slice(start,end)方法差不多,都是通过返回一个新的数组来将类数组对象转化成数组):

1.splice(start,count,item)方法传入的参数不同,第一个参数代表开始选取的元素位置,第二个说明选取的元素数量(不传说明从第一个参数位置开始到数组的最后一个元素),第三个参数代表需要添加的元素(将会添加到第一个参数位置上)。
2.splice()方法删除/代替/添加元素之后将会影响到原来的数组,而splice()则不会影响。

Array.from(array-like) ES6方法

Array.from(obj, mapFn, thisArg) Array.from方法可以将一个类数组对象或可迭代对象转换成真实的数组
obj:想要转换成数组的伪数组对象或可迭代对象。
mapFn :(可选参数) 如果指定了该参数,新数组中的每个元素会执行该回调函数。
thisArg :(可选参数)可选参数,执行回调函数 mapFn 时 this 对象。

Array.from() 方法有一个可选参数 mapFn,让你可以在最后生成的数组上再执行一次 map 方法后再返回。也就是说 Array.from(obj, mapFn, thisArg) 就相当于 Array.from(obj).map(mapFn, thisArg), 除非创建的不是可用的中间数组。 这对一些数组的子类,如 typed arrays 来说很重要, 因为中间数组的值在调用 map() 时需要是适当的类型。
from() 的 length 属性为 1 。

扩展运算符(...)ES6方法

//arguments对象
function foo(){
  var args = [...arguments]
}
//NodeList对象
[...document.querySelectorAll('div')]

循环遍历类数组对象,push到新创建的数组对象里

var length = arrayLike.length;  
var arr = [];  
for (var i = 0; i < length; i++) {  
    arr.push(arrayLike[i]);  
    return arr;  
}  
上一篇下一篇

猜你喜欢

热点阅读