一个数组插入另一个数组引入的思考

今天在群里有人抛出了个问题:

  如何把 [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 小天

posted @ 2012-06-01 02:20  liyatang  阅读(415)  评论(7编辑  收藏  举报