423 Stimmen

Entfernen Sie ein Array-Element basierend auf einer Objekteigenschaft

Ich habe ein Array von Objekten so:

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

Wie entferne ich ein bestimmtes Objekt basierend auf seiner Eigenschaft?

Zum Beispiel: Wie würde ich das Array-Objekt mit 'money' als Feld-Eigenschaft entfernen?

16voto

Senthuran Punkte 1133

Wir können das Element basierend auf der Eigenschaft mithilfe der folgenden 2 Ansätze entfernen.

  1. Verwendung der Filtermethode
testArray.filter(prop => prop.key !== 'Test Value')
  1. Verwendung der Splicemethode. Für diese Methode müssen wir den Index der Eigenschaft finden.
const index = testArray.findIndex(prop => prop.key === 'Test Value')
testArray.splice(index,1)

9voto

sifriday Punkte 4312

Hier ist eine weitere Option, die jQuery grep verwendet. Geben Sie true als dritten Parameter an, um sicherzustellen, dass grep Elemente entfernt, die mit Ihrer Funktion übereinstimmen.

users = $.grep(users, function(el, idx) {return el.field == "money"}, true)

Wenn Sie bereits jQuery verwenden, ist kein Shim erforderlich, was nützlich sein könnte, im Gegensatz zur Verwendung von Array.filter.

3voto

Sandeep sandy Punkte 377
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 3. Parameter true bedeutet, dass ein Array von Elementen zurückgegeben wird, die nicht der Funktionslogik entsprechen, false bedeutet, dass ein Array von Elementen zurückgegeben wird, die der Funktionslogik entsprechen.

2voto

Parth Raval Punkte 3571

Mit der lodash Bibliothek:

var myArray = [
    {field: 'id', operator: 'eq', value: 'id'}, 
    {field: 'cStatus', operator: 'eq', value: 'cStatus'}, 
    {field: 'money', operator: 'eq', value: 'money'}
];
var newArray = _.remove(myArray, function(n) {
  return n.value === 'money';;
});
console.log('Array');
console.log(myArray);
console.log('Neues Array');
console.log(newArray);

2voto

JackTheKnife Punkte 3082

Basierend auf einigen Kommentaren oben ist hier der Code, wie man ein Objekt anhand eines Schlüsselnamens und eines Schlüsselwerts entfernen kann

 var items = [ 
  { "id": 3.1, "name": "Test 3.1"}, 
  { "id": 22, "name": "Test 3.1" }, 
  { "id": 23, "name": "geänderter Test 23" } 
  ]

    function removeByKey(array, params){
      array.some(function(item, index) {
        return (array[index][params.key] === params.value) ? !!(array.splice(index, 1)) : false;
      });
      return array;
    }

    var removed = removeByKey(items, {
      key: 'id',
      value: 23
    });

    console.log(removed);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X