首页 新闻 搜索 专区 学院

如何实现 js 数组的 splice 方法

0
悬赏园豆:30 [已解决问题] 解决于 2022-01-29 10:20

现在有一个需求,需要实现 js 数组的 splice 方法

月下大庚角的主页 月下大庚角 | 菜鸟二级 | 园豆:221
提问于:2022-01-29 08:05
< >
分享
最佳答案
1

splice 是 es3 就有的东西哦

收获园豆:30
huiyuanai709 | 菜鸟二级 |园豆:395 | 2022-01-29 09:55

我想问要是自己写,该怎么写

月下大庚角 | 园豆:221 (菜鸟二级) | 2022-01-29 10:00

@月下大庚角:

Array.prototype.splice2 = function ( offset, remove/*, data... */ ) {
				var data, begin, removed, end;

				data = Array.prototype.slice.call( arguments, 2 );

				begin = this.slice( 0, offset );
				removed = this.slice( offset, remove );
				end = this.slice( offset + remove );

				this.length = 0;
				// This polyfill only been discovered to be necessary on Opera
				// and it seems to handle up to 1048575 function parameters.
				this.push.apply( this, begin );
				this.push.apply( this, data );
				this.push.apply( this, end );

				return removed;
			};

origin: https://gerrit.wikimedia.org/r/c/mediawiki/extensions/VisualEditor/+/72233/6/modules/ve/ve.js#406
想怎么实现就找 polyfill

huiyuanai709 | 园豆:395 (菜鸟二级) | 2022-01-29 10:11

@huiyuanai709: 多谢,请问这个 polyfill 怎么用...

月下大庚角 | 园豆:221 (菜鸟二级) | 2022-01-29 10:19

@月下大庚角:
上边这个 removed 应该有点问题
换成这样
removed = this.slice( offset, remove + offset);
原型方法加上后
var a = [1, 2, 3, 4, 5]
a.splice(1, 2, 6, 7);
换成
a.splice2(1, 2, 6, 7)

huiyuanai709 | 园豆:395 (菜鸟二级) | 2022-01-29 10:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册