javascript array splice apply的问题,,很怪,不怎么能理解????????????? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 谁能帮忙解释下 javascript arr1.splice.apply(arr1, arr2);他的任用是什么,他是怎么执行的.为什么会出现上面的现象.很难看懂. arr1.splice.call(arr1, '');这样行吗 arr1.splice.apply(arr1,[4,5,6]);等价于:arr1.splice(4,5,6); 模仿了一下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'; 它用了个uhshift把 start,deletecount两个参数给搞进去了 ///////////////////////////////////////////关健在 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的结果都不一样呢?????????????????????????????太变态了./////////////////////////////////////////////////谁能详细的说明下的么?? arr1.splice(x,y,4,5,6);http://www.w3school.com.cn/js/jsref_splice.asp ////////////////////////////////////////////////////////现在可以知道的是, 也是猜的;arr2.unshift(x, 0); 后个一定为0;则arr1.splice.apply(arr1, arr2);就是将arr2除 x, 0元素外的所有元素,添加到arr1索引第x之后. 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] unshift(x, 0);可以看出点规律.其他的看起来的好像就乱套了. javascript 如果获取一个节点的id名? 自己写的一个数字选择器 document获取页面的一个元素问题 救命,javascript打印的问题 求一匹配一对HTML标签的正则表达式~ 关于弹出窗口关闭的问题 Netscape游览器怎样用js脚本给他动态赋值 怎样模拟当mouse在table中某一个单元格时,将该整行的td都高亮显示? 请问如何在已有的一张表中插入我想要的行数,载入时不让页面刷新,动态的往页面添加。(谢谢) 快被逼疯的可怜MM问:如何得到帧结构中的对象! 关于jquery中的扩展小疑问 求助,关于jQuery中.ready()和.trigger()问题
谁能帮忙解释下
javascript arr1.splice.apply(arr1, arr2);
他的任用是什么,他是怎么执行的.为什么会出现上面的现象.很难看懂.
这样行吗
等价于:
arr1.splice(4,5,6);
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';
///////////////////////////////////////////关健在 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的结果都不一样呢?????????????????????????????太变态了./////////////////////////////////////////////////谁能详细的说明下的么??
////////////////////////////////////////////////////////现在可以知道的是, 也是猜的;arr2.unshift(x, 0); 后个一定为0;
则
arr1.splice.apply(arr1, arr2);就是将arr2除 x, 0元素外的所有元素,添加到arr1索引第x之后.
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]