• 面试题:一个数组插入另一个数组固定的位置


    arr1 = ['a', 'b', 'c']
    arr2 = ['1', '2', '3']

    把数组arr2插入数组arr1的第二个元素b后面;

    思路:

    插入特定的位置,我们首先会想到splice,但是又不能直接splice(2, 0, arr2),这样的结果:['a', 'b', ['1', '2', '3'], 'c'];

    那我们怎么能把arr2的元素一个一个的splice到arr1中呢,有没有简单的方式呢?

    答案是肯定,有一个神奇的函数call、apply,(调用一个函数的方法用在另一个函数上)

    apply的参数:第一个为所用在的函数,第二个为一个数组,

    所以我们要把arr2 变成一个适合splice的数组(包含splice前2个参数的数组)

    在arr2前面插入2个元素:splice前2个参数(开始位置,删除几个元素)

    然后把Array的splice方法指向arr1,最重要的是把新得到的arr2整个数组做为参数传给arr1!

    这样就完成了arr2插入arr1的具体位置。

    var arr1 = ['a', 'b', 'c'];
    var arr2 = ['1', '2', '3'];
    
    // 把arr2 变成一个适合splice的数组(包含splice前2个参数的数组)
    arr2.unshift(2, 0);
    Array.prototype.splice.apply(arr1, arr2);
    console.log(arr1);

    ------------------------------ 

    如果只是在arr1最后插入arr2,就可以用push插入!

    var arr1 = ['a', 'b', 'c'];
    var arr2 = ['1', '2', '3'];
    
    Array.prototype.push.apply(arr1, arr2);
    console.log(arr1);
  • 相关阅读:
    GAMBIT、ICEM、HYPERMESH耦合面的处理方法
    如何用hypermesh生成包含interface的流体网格
    python求数字位数的方法
    drawPython
    Python入门计划
    书法与篆刻创作结课
    易忽视的Python知识点
    Ubuntu中,wxpython的TextCtrl引发的error:_pixman_log_error
    在Ubuntu15.10中,使用wxPython的webview和JS进行交互
    PyCharm导入tensorflow包
  • 原文地址:https://www.cnblogs.com/niubenbit/p/4340318.html
Copyright © 2020-2023  润新知