3238 votos

Insertar Elemento en una Matriz en un Índice Específico

Estoy buscando un array de JavaScript insertar método, en el estilo de:

arr.insert(index, item)

Preferiblemente en jQuery, pero todo el código JavaScript de la implementación será en este punto porque no puedo creer que el problema que tengo de encontrar una función básica! Gracias por tu ayuda.

5259voto

tvanfosson Puntos 268301

Lo que quiero es que el splice de la función de la matriz nativa objeto.

En este ejemplo vamos a crear un array y añadir un elemento a en el índice 2:

var arr = [];
arr[0] = "Jani";
arr[1] = "Hege";
arr[2] = "Stale";
arr[3] = "Kai Jim";
arr[4] = "Borge";

console.log(arr.join());
arr.splice(2, 0, "Lene");
console.log(arr.join());

La salida del código anterior serán:

Jani,Hege,Stale,Kai Jim,Borge
Jani,Hege,Lene,Stale,Kai Jim,Borge

311voto

FrEsC 81 Puntos 757

puede implementar el Array.insert método haciendo esto:

Array.prototype.insert = function (index, item) {
  this.splice(index, 0, item);
};

a continuación, se puede utilizar como:

var arr = [ 'A', 'B', 'D', 'E' ];
arr.insert(2, 'C');

// => arr == [ 'A', 'B', 'C', 'D', 'E' ]

76voto

VisioN Puntos 62518

Matriz personalizada insert métodos

1. Con múltiples argumentos y el encadenamiento de apoyo

/* Syntax:
   array.insert(index, value1, value2, ..., valueN) */

Array.prototype.insert = function(index) {
    this.splice.apply(this, [index, 0].concat(
        Array.prototype.slice.call(arguments, 1)));
    return this;
};

Se pueden insertar varios elementos (como nativo splice ) y apoya el encadenamiento de:

["a", "b", "c", "d"].insert(2, "X", "Y", "Z").slice(1, 6);
// ["b", "X", "Y", "Z", "c"]

2. Con la matriz de argumentos de tipo fusión y el encadenamiento de apoyo

/* Syntax:
   array.insert(index, value1, value2, ..., valueN) */

Array.prototype.insert = function(index) {
    index = Math.min(index, this.length);
    arguments.length > 1
        && this.splice.apply(this, [index, 0].concat([].pop.call(arguments)))
        && this.insert.apply(this, arguments);
    return this;
};

Se pueden combinar las matrices de los argumentos con la matriz dada y también es compatible con el encadenamiento de:

["a", "b", "c", "d"].insert(2, "V", ["W", "X", "Y"], "Z").join("-");
// "a-b-V-W-X-Y-Z-c-d"

DEMOSTRACIÓN: http://jsfiddle.net/UPphH/

42voto

luisperezphd Puntos 3220

Si desea insertar varios elementos en una matriz a la vez, echa un vistazo a este Stack Overflow de respuesta: Una mejor manera de empalmar un arrray en un array en javascript

También aquí están algunas de las funciones para ilustrar ejemplos:

function insertAt(array, index) {
    var arrayToInsert = Array.prototype.splice.apply(arguments, [2]);
    return insertArrayAt(array, index, arrayToInsert);
}

function insertArrayAt(array, index, arrayToInsert) {
    Array.prototype.splice.apply(array, [index, 0].concat(arrayToInsert));
    return array;
}

Finalmente aquí está un jsFiddle así que usted puede ver por sí mismo: http://jsfiddle.net/luisperezphd/Wc8aS/

Y esta es la forma de utilizar las funciones de:

// if you want to insert specific values whether constants or variables:
insertAt(arr, 1, "x", "y", "z");

// OR if you have an array:
var arrToInsert = ["x", "y", "z"];
insertArrayAt(arr, 1, arrToInsert);

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X