2013-03-12 4 views

risposta

10

utilizzare il metodo array.splice per ottenere un array di elementi escluso questo.

Questo influisce permanentemente sull'array, se non lo si desidera, creare prima una copia.

var origArray = [0,1,2,3,4,5]; 
var cloneArray = origArray.slice(); 
var i = 3 ; 

cloneArray.splice(i,1); 

document.write(cloneArray.join("---")); 
+0

volontà che interesserà l'array in modo permanente? – blarg

+0

@JackDamery sì, così sarà necessario creare una copia. – DhruvPathak

+0

@DhruvPathak Bah, no. 'slice()' crea un nuovo oggetto, non influenza affatto la matrice originale. Le uniche funzioni con impatto sui dati qui sono 'join()' e 'splice()', ma sono chiamate dopo 'slice()'. – TN888

4

È possibile utilizzare slice() Metodo

var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"]; 
var citrus = fruits.slice(1,3); 

Il metodo slice() restituisce gli elementi selezionati in una matrice, come un nuovo oggetto array.

+0

Sicuramente il modo migliore! +1 – xechelonx

6

È possibile utilizzare ECMAScript 5 Array.prototype.filter:

var items = [1, 2, 3, 4, 5, 6]; 
var current = 2; 

var itemsWithoutCurrent = items.filter(function(x) { return x !== current; }); 

Non ci può essere alcun logiche di confronto invece di x !== current. Ad esempio, puoi confrontare le proprietà dell'oggetto.

Se si lavora con primitive, è anche possibile creare una funzione personalizzata come except che introdurrà questa funzionalità:

Array.prototype.except = function(val) { 
    return this.filter(function(x) { return x !== val; });   
}; 

// Usage example: 
console.log([1, 2, 3, 4, 5, 6].except(2)); // 1, 3, 4, 5, 6 
+0

Questo comportamento si comporterebbe in modo diverso se i valori dell'array sono tutti uguali, ad esempio [2, 2, 2, 2] –

Problemi correlati