一个数组插入另一个数组引入的思考
今天在群里有人抛出了个问题:
如何把 [0,1,4] + [2,3] =>[0,1,2,3,4]。
首先想到的是查下api有没有相关的。于是找到了个 splice。
splice的用法是
arrayObj.splice(start, deleteCount, [item1[, item2[, . . . [,itemN]]]]);
参数是很多很多的参数,如item1,item2等等。 而不是[item1,item2];
对于上述的两种 参数写法,联想到了两个调用方法 apply, call。他们的参数有点类式。
so,问题可以解决了。
var a=[0,1,4],b=[2,3];
[].splice.apply(a, [2,0].concat(b)); // a 结果是 [0,1,2,3,4];
于是。对着这种类式的问题,可以采用这种方式,基本两种用法是
apply(this, [args1,args2,.....]);
call(this, args1,args2.....);
PS:一开始我的答案是(好2): a.splice.apply(a, [].concat(2,0,b));
改进的地方有:
1 a.splice 可以改成 [].splice;
2 [].concat(2,0,b) 当初这样写的原因是想要达到 [2,0,2,3],不过改成 [2,0].concat(b)更直观,把前两个参数分开来了。
thanks 小天