• 伪数组转换为真正的数组


    1. 如何将伪数组转换为真正的数组深入解析
    常见的伪数组:argument、通过document.getElements获取到的内容
    伪数组具有length属性,也是一个一个的元素组成,但构造器不是Array,不能使用数组的方法
    转换数组的方法:
    1.通过遍历将伪数组里元素放入到一个新的数组里
    let arg = arguments
    let arr = []
    for(var I = 0;I < arg.length;I ++){
          arr.push(arg[i])
    }
    1. 通过call改变数组slice方法里的this指向
    一个数组都是由它的构造器实例化出来的,var a = [];正规的用法:var a = new Array()因为Array是一个构造函数,每一个构造函数都有原型,且构造函数构造出来的实例可以使用原型上的方法,也就是说因为Array的原型上有一些方法,所以每一个数组都可以使用Array原型上的push等方法
    因为伪数组的构造器不是Array,当然不能使用Array原型上的push方法 
    现在数组有一个方法slice,这个方法每次都会返回一个新数组,如果不传参的话,返回的新数组的元素和原数组的元素是一模一样的
    让一个真正的数组直接从Array.prototype上执行slice方法,但是在“”里面的this换成咱们的伪数组,这样的话,就会返回一个元素和伪数组元素一样的真正数组了
    Array.prototype.slice = function(){
          Let arr = []
          for(var i = 0;i <this.length;i ++){
                arr.push(this[i])
    }
    return arr
    }
    let arr = [].slice.call(arg)
    Array.prototype.slice.call(arg)
  • 相关阅读:
    LeetCode对撞指针汇总
    167. Two Sum II
    215. Kth Largest Element in an Array
    2018Action Recognition from Skeleton Data via Analogical Generalization over Qualitative Representations
    题解 Educational Codeforces Round 84 (Rated for Div. 2) (CF1327)
    题解 JZPKIL
    题解 八省联考2018 / 九省联考2018
    题解 六省联考2017
    题解 Codeforces Round #621 (Div. 1 + Div. 2) (CF1307)
    题解Codeforces Round #620 (Div. 2)
  • 原文地址:https://www.cnblogs.com/clearlove7icon/p/8056831.html
Copyright © 2020-2023  润新知