解决方案 »

  1.   


    谁能帮忙解释下 
    javascript arr1.splice.apply(arr1, arr2);
    他的任用是什么,他是怎么执行的.为什么会出现上面的现象.很难看懂.
      

  2.   

    arr1.splice.call(arr1, '');
    这样行吗
      

  3.   

    arr1.splice.apply(arr1,[4,5,6]);
    等价于:
    arr1.splice(4,5,6);
      

  4.   

    模仿了一下splice函数
    var $a =[1,2,3];
    var $b = [4,5,6];
    $b.unshift(0,0);//$a.splice(0,0,'jiang',6,9);
    Array.prototype.splicexx = function(start,deletecount){
    var items,len1,lenthis,cloneitem,newitem;
    newitem = [];
    items = Array.prototype.slice.call(arguments,2);
    len1 = items.length;
    lenthis = this.length;
    for(var i=0;i<lenthis;i++){
    if(i == start){
    for(var j=0;j<len1;j++){
    newitem.push(items[j]);
    }
    for(var k=0;k<deletecount;k++){
    i++;
    }
    }
    newitem.push(this[i]);
    }
    return newitem;
    }var $c = $a.splicexx.apply($a,$b);
    var $x = 'ddd';
      

  5.   

    它用了个uhshift把 start,deletecount两个参数给搞进去了
      

  6.   


    ///////////////////////////////////////////关健在 arr2.unshift(x, y); 这里x, y 设置的值不一样arr1.splice.apply(arr1, arr2);结果 arr1所返回的值,就不会一样. (0,0) (1,0), (1,0), (1,1), (1,2)等等.///////奇怪, unshift(x,y,z...) 不是将里面参数的值的添加到 数组的前面么...//////////////////////////怎么splice.apply的结果都不一样呢?????????????????????????????太变态了./////////////////////////////////////////////////谁能详细的说明下的么??
      

  7.   

    arr1.splice(x,y,4,5,6);http://www.w3school.com.cn/js/jsref_splice.asp
      

  8.   


    ////////////////////////////////////////////////////////现在可以知道的是, 也是猜的;arr2.unshift(x, 0); 后个一定为0;

    arr1.splice.apply(arr1, arr2);就是将arr2除 x, 0元素外的所有元素,添加到arr1索引第x之后.
      

  9.   

    var arr1=[1,2,3]
    var arr2=[4,5,6]
    arr2/unshift(0,0)  //arr2=[0,0,4,5,6]
    arr1.splice.apply(arr1,arr2)
    // arr1=arr1.splice(0,0,4,5,6)
    //从arr1索引0开始.去除0个元素,插入arr2
    // arr1=[4,5,6,1,2,3] 
    arr3=[11,12,13]
    arr4=[21,22,23]
    arr4.unshift(1,0) //arr4=[1,0,21,22,23]
    arr3.splice.apply(arr3,arr4)
    //arr3=arr3.splice(1,0,21,22,23)
    //arr3=[11,21,22,23,12,13]
      

  10.   

    unshift(x, 0);可以看出点规律.其他的看起来的好像就乱套了.