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



4 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);
    }
}
javascript jquery arrays object properties

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



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.




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





Related