bt365体育投注.主頁欢迎您!!

    <acronym id="zvmrr"></acronym>
    <td id="zvmrr"></td>
  • <tr id="zvmrr"><label id="zvmrr"></label></tr>
  • <acronym id="zvmrr"></acronym>
  • linong
    • 17.2k

    面试题 - 将伪数组转换为数组的 N 种方案

    今天面试了一个人,居然不知道如何将伪数组转换为数组

    什么是伪数组?

    1. length 属性,而且也是数值下标的对象。
    2. 不具备 Array.prototype 上的方法

    常见伪数组

    1. arguments
    2. document.getElementsByClassName
    3. $('div')

    伪数组转换为数组

    输出伪数组

    function fun(a,b,c = 1){
        arr = arguments
        console.log(
            typeof arr,
            Array.isArray(arr),
            arr.length,
            arr.slice,
            arr,
        )
    fun(3, 2)

    使用 Array.from (ES6+)(babel-polyfill)

    function fun(a,b,c = 1){
        arr = Array.from(arguments)
        console.log(
            typeof arr,
            Array.isArray(arr),
            arr.length,
            arr.slice,
            arr,
        )
    fun(3, 2)

    使用 ... 展开运算符(ES6+)(babel)

    function fun(a,b,c = 1){
        arr = [...arguments]
        console.log(
            typeof arr,
            Array.isArray(arr),
            arr.length,
            arr.slice,
            arr,
        )
    fun(3, 2)

    使用 slice 和 call 的方案

    function fun(a,b,c = 1){
        arr = Array.prototype.slice.call(arguments)
        console.log(
            typeof arr,
            Array.isArray(arr),
            arr.length,
            arr.slice,
            arr,
        )
        arr = Array.prototype.slice.apply(arguments)
        console.log(
            typeof arr,
            Array.isArray(arr),
            arr.length,
            arr.slice,
            arr,
        )
        arr = [].slice.call(arguments)
        console.log(
            typeof arr,
            Array.isArray(arr),
            arr.length,
            arr.slice,
            arr,
        )
        arr = [].slice.apply(arguments)
        console.log(
            typeof arr,
            Array.isArray(arr),
            arr.length,
            arr.slice,
            arr,
        )
    }
    fun(3, 2)

    循环遍历(兼容性无敌,朴素不)

    function fun(a,b,c = 1){
        arr = [];
        for(var i = 0,length = arguments.length; i < length; i++) {
            arr.push(arguments[i]);
        }
        console.log(
            typeof arr,
            Array.isArray(arr),
            arr.length,
            arr.slice,
            arr,
        )
    }
    fun(3, 2)

    微信公众号:前端linong

    clipboard.png

    阅读 724

    推荐阅读
    javascript-lNong
    用户专栏

    只此一生,何必从众

    1004 人关注
    133 篇文章
    专栏主页
    bt365体育投注