当前位置: 移动技术网 > IT编程>开发语言>JavaScript > js在数组的任意位置连接数组(代码实例)

js在数组的任意位置连接数组(代码实例)

2019年03月25日  | 移动技术网IT编程  | 我要评论

今天撸我的公众号的时候,有一个需求,其中需要我在一个数组的任意地方插入一个数组,然后使得插入后的数组仍然是个一维数组,说的有点绕,举个栗子

arr1 = [1,2,5]
arr2 = [3,4]
//连接这两个数组之后
arr1 = [1,2,3,4,5]
arr2 = [3,4]

我们都知道array.concat()可以连接两个数组,但是在这里根本不能用,因为它是从后面接的.不符合要求,所以我决定自己撸一个

array.prototype.insertsome = function(place, thing) {
	// 向数组插入元素, place是位置(整数) thing是要插入的数据
	if(thing instanceof array) {
		var alllen = this.length + thing.length; //合并数组后的长度
		var thinglen = thing.length; //要插入的数组长度
		var thislen = this.length; //被插入数组的长度
		for(var i = alllen; i > place + thinglen; i--) {
			// 先把原来数组在place后面的元素移去后方;
			this[i - 1] = this[thislen - 1];
			thislen--;
		}
		for(var k = i - 1; k > thislen - 1; k--) {
			// 再把要插入的数组从尾到头插入原来的数组
			this[k] = thing[thinglen - 1];
			thinglen--;
		}
	} else {
		// 如果thing不是个数组,那么用splice就行了
		this.splice(place, 0, thing);
	}
}

大概思路是这样,比如有[1,2,3,4,5]这个数组,我想在3后面插入[6,7,8,9,10],那么我先延长数组,把3后面的4和5放到指定位置先(延长之后的数组长度是10,于是arr[9]=5;arr[8]=4;),然后再把,[6,7,8,9,10]按倒序插进去, 最后的结果是[1,2,3,6,7,8,9,10,4,5].

虽然到这里任务是完成了,可以用, 但是我总有种感觉可以继续优化,如果数组长度为一亿呢?我应该怎么做才更省时间

今天先记录到这里,以后有想法了再更新.

以上!

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网