Javascript:What';It’将阵列拼接在一起的方法比I';我现在用什么?
这让我一看到它就不寒而栗。有一种数组方法。如果您不想修改原始数组,可以将您的数组缩短一点,如下所示:Javascript:What';It’将阵列拼接在一起的方法比I';我现在用什么?,javascript,arrays,array-splice,Javascript,Arrays,Array Splice,这让我一看到它就不寒而栗。有一种数组方法。如果您不想修改原始数组,可以将您的数组缩短一点,如下所示: var newlist = list.slice( 0, pos ).concat( tasks ).concat( list.slice( pos ) ); 你的方法和其他方法一样好- 您必须分别拼接第二个阵列的每个成员 var newlist = list.slice(0,pos).concat(tasks,list.slice(pos)); 警报(list.join('\n')) 但
var newlist = list.slice( 0, pos ).concat( tasks ).concat( list.slice( pos ) );
你的方法和其他方法一样好- 您必须分别拼接第二个阵列的每个成员
var newlist = list.slice(0,pos).concat(tasks,list.slice(pos));
警报(list.join('\n'))
但这似乎需要列出每个参数。那么,如何展开另一个数组作为该函数的扩展参数呢?或者它是否接受一个数组参数拼接在一起(而不是将传递的数组作为新数组中的单个项进行拼接)?Yikes,这很难看。您可以使用
splice
函数的apply
方法,从要拼接的数组中构建参数数组,但这非常可怕。我觉得你的版本会更好。我觉得没那么糟。不过,将数组的尾部挤出并放入新元素可能会快一点。如果你不得不经常这样做的话,你可能想考虑一个更好的数据结构。你是说某种树?你有什么建议吗?看起来你想在另一个数组中间插入一个数组。您可以在此答案中使用函数insertArrayAt()
。您可以这样使用它insertArrayAt(列表、pos、任务)
。这会改变list
如果您想要一个新列表,请首先使用slice(0)
克隆列表。类似这样:var newlist=insertArrayAt(list.slice(0),pos,tasks)
var list=[1,2,3,4,5,6,7,8,9], tasks= ['a','b','c'], pos=3;
while(tasks.length ) list.splice(pos,0,tasks.pop());
/* returned value:
1
2
3
a
b
c
4
5
6
7
8
9
*/