Javascript 如何连接2个切片阵列?

Javascript 如何连接2个切片阵列?,javascript,arrays,slice,concat,Javascript,Arrays,Slice,Concat,我有: 我正努力做到: var a = [1,2,3,4,5,6,7,8,9] 因此,我: var b = []; b.concat(a.slice(0,3), a.slice(-3)) 如何从b处的数组中获取3个第一个和3个最后一个元素?在数组中不起内联作用。必须捕获concat()的结果 concat() 您没有更新b数组的值 var a=[1,2,3,4,5,6,7,8,9]; VarB=[].concat(a.slice(0,3),a.slice(-3)); 文件。编写(b); 控

我有:

我正努力做到:

var a = [1,2,3,4,5,6,7,8,9]
因此,我:

var b = [];
b.concat(a.slice(0,3), a.slice(-3))
如何从
b
处的数组中获取3个第一个和3个最后一个元素?

在数组中不起内联作用。必须捕获
concat()
的结果

concat()

您没有更新
b
数组的值

var a=[1,2,3,4,5,6,7,8,9];
VarB=[].concat(a.slice(0,3),a.slice(-3));
文件。编写(b);
控制台日志(b)没有副作用,这意味着它不会修改原始数组(即
b

我认为有两种方法可以实现您的目标:

concat
的结果分配给
b
(这将打破对原始数组的引用,因为它是一个新数组)

或者使用和
apply
就地修改
b

b = b.concat(a.slice(0,3), a.slice(-3));
这个有点棘手。为什么要使用
apply

因为执行
b.push(a.slice(0,3),a.slice(0-3))
会导致不同的结构:
[…],[…]


有关
apply
的更多信息,请参阅的文档,我理解您的意思。一些旧的JS数组函数非常愚蠢。它们不会像
push()
那样返回您想要的内容,后者返回结果数组的长度,而不是返回对结果数组的引用。我曾多次希望删除一个项,同时将结果数组作为参数传递给函数。这就是你的问题所在。我有一个数组

Array.prototype.push.apply(b, a.slice(0,3).concat(a.slice(-3)));
我想删除第5项并将数组作为参数传递。假设
i
为4

var arr = [1,2,3,4,5,6,7,8,9];
不会剪的。愚蠢的事情是将数组中已删除的元素传递给函数,而不是对所调用数组的引用。但我不想做几个指示。我只想把它作为一条指令的返回值传递给一个函数。所以我必须想出像这样的发明

myRecursiveFunction(arr.splice(i,1));
有更好主意的请告诉我

myRecursiveFunction(arr.splice(i,1));
myRecursiveFunction(arr.slice(0,i).concat(arr.slice(i+1)));