javascript - remove - Come inserire un elemento in una matrice in un indice specifico?




js insert array into array (8)

Metodi di insert array personalizzati

1. Con più argomenti e supporto per il concatenamento

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

Può inserire più elementi (come fa la splice nativa) e supporta il concatenamento:

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

2. Con argomenti di tipo array unendo e concatenando il supporto

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

Può unire gli array dagli argomenti con l'array specificato e supporta anche il concatenamento:

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

DEMO: http://jsfiddle.net/UPphH/

Sto cercando un metodo di inserimento di array Javascript, nello stile di:

arr.insert(index, item)

Preferibilmente in jQuery, ma qualsiasi implementazione Javascript farà a questo punto.


È possibile implementare il metodo Array.insert modo seguente:

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

Quindi puoi usarlo come:

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

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

Ho provato questo e sta funzionando bene!

var initialArr = ["India","China","Japan","USA"];
initialArr.splice(index, 0, item);

L'indice è la posizione in cui si desidera inserire o eliminare l'elemento. 0 cioè i secondi parametri definiscono il numero di elementi dall'indice da rimuovere elemento sono le nuove voci che vuoi fare in array. Può essere uno o più di uno.

initialArr.splice(2, 0, "Nigeria");
initialArr.splice(2, 0, "Australia","UK");

In questo caso, ti consiglio di utilizzare JavaScript puro, inoltre non c'è alcun metodo di inserimento in JavaScript, ma abbiamo un metodo che è un metodo di array incorporato che fa il lavoro per te, si chiama splice ...

Vediamo cosa è splice () ...

Il metodo splice () modifica il contenuto di un array rimuovendo gli elementi esistenti e / o aggiungendo nuovi elementi.

OK, immagina di avere questo array qui sotto:

const arr = [1, 2, 3, 4, 5];

Possiamo rimuovere 3 come questo:

arr.splice(arr.indexOf(3), 1);

Restituirà 3, ma se controlliamo l'arrro ora, abbiamo:

[1, 2, 4, 5]

Fin qui, tutto bene, ma come possiamo aggiungere un nuovo elemento all'array usando splice? Riportiamo 3 nell'arr ...

arr.splice(2, 0, 3);

Vediamo cosa abbiamo fatto ...

Usiamo nuovamente la giunzione , ma questa volta per il secondo argomento, passiamo a 0 , significa che non vogliamo eliminare nessun elemento, ma allo stesso tempo aggiungiamo il terzo argomento che è 3 che verrà aggiunto al secondo indice ...

Dovresti essere consapevole che possiamo eliminare e aggiungere allo stesso tempo, ad esempio ora possiamo fare:

arr.splice(2, 2, 3);

Il che cancellerà 2 elementi all'indice 2, quindi aggiungerà 3 all'indice 2 e il risultato sarà:

[1, 2, 3, 5];

Questo mostra come funziona ogni oggetto in splice:

array.splice (start, deleteCount, item1, item2, item3 ...)


Per una corretta programmazione funzionale e concatenazione, un'invenzione di Array.prototype.insert() è essenziale. In realtà la giuntura avrebbe potuto essere perfetta se avesse restituito la matrice mutata invece di una matrice vuota totalmente priva di significato. Quindi qui va

Array.prototype.insert = function(i,...rest){
  this.splice(i,0,...rest)
  return this
}

var a = [3,4,8,9];
document.write("<pre>" + JSON.stringify(a.insert(2,5,6,7)) + "</pre>");

Bene bene quanto sopra con Array.prototype.splice() si muta l'array originale e alcuni potrebbero lamentarsi del tipo "non si dovrebbe modificare ciò che non appartiene a te" e questo potrebbe rivelarsi corretto. Quindi per il benessere pubblico vorrei dare un altro Array.prototype.insert() che non Array.prototype.insert() la matrice originale. Eccolo;

Array.prototype.insert = function(i,...rest){
  return this.slice(0,i).concat(rest,this.slice(i));
}

var a = [3,4,8,9],
    b = a.insert(2,5,6,7);
console.log(JSON.stringify(a));
console.log(JSON.stringify(b));


Quello che vuoi è la funzione di splice sull'oggetto matrice nativo.

arr.splice(index, 0, item); inserirà l' item in arr all'indice specificato (eliminando prima gli elementi 0 , ovvero, è solo un inserto).

In questo esempio creeremo un array e ne aggiungeremo un elemento nell'indice 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());


Un'altra possibile soluzione, con l'uso della Array#reduce .

var arr = ["apple", "orange", "raspberry"],
    arr2 = [1, 2, 4];

function insert(arr, item, index) {
    arr = arr.reduce(function(s, a, i) {
      i == index ? s.push(item, a) : s.push(a);
      return s;
    }, []);   
    console.log(arr);
}

insert(arr, "banana", 1);
insert(arr2, 3, 2);


Aggiungi singolo elemento a un indice specifico

//Append at specific position(here at index 1)
arrName.splice(1, 0,'newName1');
//1: index number, 0: number of element to remove, newName1: new element


//Append at specific position (here at index 3)
arrName[3] = 'newName1';

Aggiungi più elementi a un indice specifico

//Append from index number 1
arrName.splice(1, 0,'newElemenet1', 'newElemenet2', 'newElemenet3');
//1: index number from where append start, 
//0: number of element to remove, 
//newElemenet1,2,3: new elements




insert