[Javascript] Entfernen Sie das Array-Element basierend auf der Objekteigenschaft



Answers

Iteriere durch das Array und spleiße diejenigen aus, die du nicht willst. Zur einfacheren Verwendung, iterieren Sie rückwärts, so dass Sie die Live-Natur des Arrays nicht berücksichtigen müssen:

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

Ich habe eine Reihe von Objekten wie folgt:

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

Wie entferne ich einen bestimmten, basierend auf seiner Eigenschaft?

zB Wie würde ich das Array-Objekt mit 'money' als Feldeigenschaft entfernen?




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

Element ist ein Objekt im Array. Der dritte Parameter true bedeutet, dass ein Array von Elementen zurückgegeben wird, die die Funktionslogik nicht erfüllen. false bedeutet, dass ein Array von Elementen zurückgegeben wird, die die Funktionslogik nicht erfüllen.




Sie können den findIndex von findIndex , um den Index des spezifischen Elements zu erhalten und ihn dann zu findIndex .

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



jAndy's Lösung ist wahrscheinlich am besten, aber wenn Sie sich nicht auf Filter verlassen können, könnten Sie etwas tun wie:

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