Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:What';It’将阵列拼接在一起的方法比I';我现在用什么?_Javascript_Arrays_Array Splice - Fatal编程技术网

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
*/