from - ¿Hay una manera de usar Array.splice en javascript con el tercer parámetro como una matriz?
splice javascript remove (7)
Con ES6, puede utilizar el operador de spread . Lo hace mucho más conciso y legible.
var a1 = [''a'', ''e'', ''f''];
var a2 = [''b'', ''c'', ''d''];
a1.splice(1, 0, ...a2);
console.log(a1)
Estoy intentando lo siguiente:
var a1 = [''a'', ''e'', ''f'']; // [a, e, f]
var a2 = [''b'', ''c'', ''d'']; // [b, c, d]
a1.splice(1, 0, a2); // expected [a, b, c, d, e, f]
// actual (a, [b, c, d], e, f]
Estoy limitado a mi caso de uso al tener a2 como una matriz de tamaño indeterminado. ¿Alguien sabe de una manera de alimentar un empalme de una matriz como la sustitución, o alternativamente una función incorporada para hacer esto? Sé que podría recorrer los elementos de a2 y empalmarlos de uno en uno, pero preferiría el método más rápido posible porque tendré que hacer esto mucho.
Esto debería funcionar.
var a1 = [''a'', ''e'', ''f''];
var a2 = [''b'', ''c'', ''d''];
a1.concat(a2, a1.splice(1,a1.length-1)) // [a, b, c, d, e, f]
Prueba esto:
var params = a2.slice(0);
params.unshift(1,0);
a1.splice.apply(a1,params);
En el caso más general:
Array.prototype.splice_multi = function(offset,todelete,insert) {
var params = insert.slice(0);
params.unshift(offset,todelete);
return this.splice.apply(this,params);
};
a1.splice_multi(1,0,a2);
Array.splice
soporta múltiples argumentos después de los dos primeros. Esos argumentos se agregarán a la matriz. Sabiendo esto, puede usar Function.apply
para pasar la matriz como la lista de argumentos.
var a1 = [''a'', ''e'', ''f''];
var a2 = [''b'', ''c'', ''d''];
// You need to append `[1,0]` so that the 1st 2 arguments to splice are sent
Array.prototype.splice.apply(a1, [1,0].concat(a2));
private moveElements(source: Array<any>, target: Array<any>) {
target.push(...source);
source.splice(0, source.length);
//or
[].push.apply(target,source);
source.splice(0, source.length);
}
var a1 = [''a'', ''e'', ''f''],
a2 = [''b'', ''c'', ''d''];
a1.splice(1, 0, a2);
var flatten = [].concat.apply([], a1); // ["a", "b", "c", "d", "e", "f"]
Array.prototype.splice.apply( [1,2,3], [2, 0].concat([4,5,6]) );