También puede agregar tal función al prototipo de matriz, si desea algo que sea casi idéntico al método de empalme. P.ej.
Array.prototype.spliceArray = function(index, n, array) {
return Array.prototype.splice.apply(this, [index, n].concat(array));
}
A continuación, el uso sería simplemente:
var array = ["A","B","C","","E","F"];
array.splice(3,1,"D");
// array is ["A","B","C","D","E","F"]
array.spliceArray(3,3,["1","2","3"]);
// array is ["A","B","C","1","2","3"]
verlo en acción aquí: http://jsfiddle.net/TheMadDeveloper/knv2f8bb/1/
Algunas notas:
- La función
splice
modifica la matriz directamente, pero vuelve el conjunto de elementos que se eliminaron ... no el conjunto empalmado.
- Si bien normalmente no se recomienda extender las clases básicas de JavaScript, esto es relativamente benigno con la mayoría de los marcos estándar.
- Extender
Array
no funcionará en los casos en que se utilicen clases de matriz especializadas, como datos de ImageData Uint8ClampedArray.
Aunque, resulta que necesito hacer Array.prototype.splice.apply (theArray, [start, number] .concat (newItemsArray)) ya que todos los argumentos, no solo algunos, deben estar en una matriz. – wheresrhys
+1 para el patrón '[start, number] .concat (array)'. es ingenioso – Claudiu
¿Alguien ha intentado ingresar una gran cantidad de elementos en Chrome? Alrededor de 130K elementos parece que tenemos la excepción de Stackoverflow. Ver: http://jsfiddle.net/DcHCY/ –