4290 votes

Insérer un Élément dans un Tableau à un Indice Spécifique

Je suis à la recherche d'un tableau JavaScript méthode d'insertion, dans le style de:

arr.insert(index, item)

De préférence en jQuery, mais le code JavaScript de la mise en œuvre à partir de ce point, parce que je ne peux pas croire j'éprouve des difficultés à trouver cette fonction de base! Merci pour votre aide.

6782voto

tvanfosson Points 268301

Ce que vous voulez, c'est l' splice la fonction de l'objet array natif.

Dans cet exemple, nous allons créer un tableau et ajouter un élément à l'index 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 sortie du code ci-dessus seront:

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

425voto

FrEsC 81 Points 757

vous pouvez mettre en œuvre le Tableau.méthode d'insertion en faisant ceci:

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

ensuite, vous pouvez l'utiliser comme:

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

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

90voto

VisioN Points 62518

Tableau personnalisé insert méthodes

1. Avec plusieurs arguments et le chaînage de soutien

/* 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;
};

Il peut insérer plusieurs éléments (comme natif splice t) et prend en charge le chaînage:

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

2. Avec le tableau-type des arguments de la fusion et le chaînage de soutien

/* 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;
};

Il peut fusionner des tableaux à partir des arguments avec le tableau donné et prend également en charge le chaînage:

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

DÉMO: http://jsfiddle.net/UPphH/

56voto

luisperezphd Points 3220

Si vous souhaitez insérer plusieurs éléments dans un tableau à la fois, découvrez ce Débordement de Pile réponse: Une meilleure façon d'épissage un arrray dans un tableau en javascript

Aussi, voici quelques fonctions pour illustrer ces deux exemples:

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

Enfin, voici un jsFiddle de sorte que vous pouvez voir par vous-même: http://jsfiddle.net/luisperezphd/Wc8aS/

Et ce est la façon dont vous utilisez les fonctions suivantes:

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X