伪数组转真数组

什么是伪数组?

1.具有length属性,可以获取长度。
2.具有索引,可以通过遍历获取所有元素。
3.不可以使用数组的内置方法和属性。

常见的伪数组

1.函数的内置对象arguments,它是所有实参组成的伪数组。
2.DOM对象组成的伪数组,通过document.querySelectorAll等获得的dom对象列表(nodelist)。
3.jQuery对象组成的伪数组

伪数组转真数组

1 遍历转换

(function(){
    console.log(arguments)
    // Arguments(6) [1, 2, 3, 4, 5, 6, callee: ƒ, Symbol(Symbol.iterator): ƒ]
    
    let newArr = [];
    
    for(let k in arguments){
        newArr[k] = arguments[k];
    }

    newArr.forEach((item, index) => {
        console.log(item, index);
    });
    //1 0
    // 2 1
    // 3 2
    // 4 3
    // 5 4
    // 6 5
})(1,2,3,4,5,6)

2 扩展运算符

(function(){
    console.log([...arguments])
    // Arguments(6) [1, 2, 3, 4, 5, 6, callee: ƒ, Symbol(Symbol.iterator): ƒ]
    
	let newArr = [...arguments];

    newArr.forEach((item, index) => {
        console.log(item, index);
    });
    //1 0
    // 2 1
    // 3 2
    // 4 3
    // 5 4
    // 6 5
  
})(1,2,3,4,5,6)

3 通过 [].slice.call()实现

(function(){
    console.log(arguments)
    // Arguments(6) [1, 2, 3, 4, 5, 6, callee: ƒ, Symbol(Symbol.iterator): ƒ]
    
    let newArr = [];
    
    // 借用真数组上的slice方法浅复制出一个新的真数组
    newArr = [].slice.call(arguments);

    newArr.forEach((item, index) => {
        console.log(item, index);
    });
    //1 0
    // 2 1
    // 3 2
    // 4 3
    // 5 4
    // 6 5
})(1,2,3,4,5,6)

4 Array.from()实现

(function(){
    console.log(arguments)
    // Arguments(6) [1, 2, 3, 4, 5, 6, callee: ƒ, Symbol(Symbol.iterator): ƒ]
    
    let newArr = [];
    
   newArr = Array.from(arguments);

    newArr.forEach((item, index) => {
        console.log(item, index);
    });
    //1 0
    // 2 1
    // 3 2
    // 4 3
    // 5 4
    // 6 5
})(1,2,3,4,5,6)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值