[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?




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



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.