2017-04-08 3 views
0

Ich habe ein Objekt wieSplice arbeitet nicht für das Objekt (indexOf ist keine Funktion)

Object {val1: "Hello", val2: "", dt1: "pilo1", dt2: "pilo2", lo1: "log1"} 

Jetzt will ich die Schlüssel entfernen, die leere Werte haben („“).

habe ich versucht, den Code:

angular.forEach($scope.test,function(value,key){ 
      if(value==""){ 
        var index = $scope.test.indexOf(key); 
        $scope.test.splice(index,1); 
      } 
    }); 
//$scope.test={val1: "Hello",val2: "",dt1:".......} 

Jetzt gibt es eine weitere Sache, die ich habe die Schlüssel berücksichtigen nicht statisch sind. Sie können ihren Namen abhängig von der Bedingung ändern. Zum Beispiel: {val1: "",val2:"Hello1",val3:"",val4:"Hello3",dt1:""} Also brauche ich eine generische Lösung.

+0

indexOf ist für Arrays ... http://stackoverflow.com/questions/8668174/indexof-method-in-an-object-array – mplungjan

Antwort

0

Sie können eine Objekteigenschaft nicht mit der Methode splice löschen. Statt dies zu tun, können Sie den Operator delete verwenden.

angular.forEach($scope.test,function(value,key){ 
    if(value==""){ 
     delete $scope.test[key] 
    } 
}); 

Für weitere Informationen zu diesem Betreiber regardng, haben Sie bitte einen Blick here. Unten habe ich ein Schnipsel mit plain JavaScript, das die Verwendung von delete Operator zeigt.

var obj = {val1: "Hello", val2: "", dt1: "pilo1", dt2: "pilo2", lo1: "log1"}; 
 
console.log('Before we call delete'); 
 
console.log(obj); 
 
Object.keys(obj) 
 
     .forEach(function(key){ 
 
      if(obj[key]===""){ 
 
       delete obj[key]; 
 
      } 
 
}); 
 
console.log('After we call delete'); 
 
console.log(obj);

+0

Es ist gut woking. Danke :) –

+0

@NirajSazzie Sie sind herzlich willkommen! – Christos

Verwandte Themen