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)));