[javascript] Rimuovi l'elemento dell'array in base alla proprietà dell'oggetto


Answers

Scorrere l'array e splice quelli che non si desidera. Per un utilizzo più semplice, iterare all'indietro in modo da non dover tenere conto della natura live dell'array:

for (var i = myArray.length - 1; i >= 0; --i) {
    if (myArray[i].field == "money") {
        myArray.splice(i,1);
    }
}
Question

Ho una serie di oggetti come questi:

var myArray = [
    {field: 'id', operator: 'eq', value: id}, 
    {field: 'cStatus', operator: 'eq', value: cStatus}, 
    {field: 'money', operator: 'eq', value: money}
];

Come posso rimuovere uno specifico in base alla sua proprietà?

Ad esempio, come rimuovere l'oggetto dell'array con "money" come proprietà del campo?




var myArray = [
    {field: 'id', operator: 'eq', value: id}, 
    {field: 'cStatus', operator: 'eq', value: cStatus}, 
    {field: 'money', operator: 'eq', value: money}
];
console.log(myArray.length); //3
myArray = $.grep(myArray, function(element, index){return element.field == "money"}, true);
console.log(myArray.length); //2

L'elemento è un oggetto nell'array. Il terzo parametro true significa che restituirà un array di elementi che non funziona nella logica della propria funzione, i false mezzi restituiranno un array di elementi che non funziona nella logica della funzione.




Puoi usare il findIndex di findIndex per ottenere l'indice dell'elemento specifico e poi unirlo usando.

myArray.splice(_.findIndex(myArray, function(item) {
    return item.value === 'money';
}), 1);



La soluzione di jAndy è probabilmente la migliore, ma se non puoi fare affidamento sul filtro puoi fare qualcosa del tipo:

var myArray = [
    {field: 'id', operator: 'eq', value: 'id'}, 
    {field: 'cStatus', operator: 'eq', value: 'cStatus'}, 
    {field: 'money', operator: 'eq', value: "money"}
];

myArray.remove_key = function(key){
    var i = 0, 
        keyval = null;
    for( ; i < this.length; i++){
        if(this[i].field == key){
            keyval = this.splice(i, 1);
            break;
        }
    }
    return keyval;
}





Links