javascript array splice apply的问题,,很怪,不怎么能理解?????????????

fx_blog 2013-09-26 09:10:05

...全文
377 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
fx_blog 2013-09-29
  • 打赏
  • 举报
回复
看来还是结贴,无果~
fx_blog 2013-09-26
  • 打赏
  • 举报
回复
//////////////////////////////////////////////////////// 现在可以知道的是, 也是猜的; arr2.unshift(x, 0); 后个一定为0; 则 arr1.splice.apply(arr1, arr2); 就是将arr2除 x, 0元素外的所有元素,添加到arr1索引第x之后.
zhjdg 2013-09-26
  • 打赏
  • 举报
回复
arr1.splice(x,y,4,5,6); http://www.w3school.com.cn/js/jsref_splice.asp
fx_blog 2013-09-26
  • 打赏
  • 举报
回复
/////////////////////////////////////////// 关健在 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的结果都不一样呢????????????????????????????? 太变态了. ///////////////////////////////////////////////// 谁能详细的说明下的么??
zhjdg 2013-09-26
  • 打赏
  • 举报
回复
它用了个uhshift把 start,deletecount两个参数给搞进去了
zhjdg 2013-09-26
  • 打赏
  • 举报
回复
模仿了一下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';
未知数 2013-09-26
  • 打赏
  • 举报
回复
arr1.splice.apply(arr1,[4,5,6]); 等价于: arr1.splice(4,5,6);
  • 打赏
  • 举报
回复
arr1.splice.call(arr1, ''); 这样行吗
fx_blog 2013-09-26
  • 打赏
  • 举报
回复
谁能帮忙解释下 javascript arr1.splice.apply(arr1, arr2); 他的任用是什么,他是怎么执行的. 为什么会出现上面的现象. 很难看懂.
fx_blog 2013-09-26
  • 打赏
  • 举报
回复
unshift(x, 0);可以看出点规律. 其他的看起来的好像就乱套了.
blackant2 2013-09-26
  • 打赏
  • 举报
回复
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]

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧