2017-04-08 68 views
0

我有一個像接頭不工作的對象(的indexOf不是一個函數)

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

對象現在我想刪除那些具有空值(「」)鍵。

我試過代碼:

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:".......} 

現在有,我必須要考慮一件事的關鍵不是靜態他們可以改變他們的名字取決於條件。例如:{val1: "",val2:"Hello1",val3:"",val4:"Hello3",dt1:""} 所以我需要一個通用的解決方案。

+0

的indexOf是數組... http://stackoverflow.com/questions/8668174/indexof-method-in-an-object-array – mplungjan

回答

0

使用splice方法不能刪除對象屬性。而不是這樣做,您可以使用delete運算符。

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

有關此操作員的更多信息,請查看here。下面我用普通JavaScript的片段,即顯示delete運算符的用法。

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

它沃金罰款。謝謝:) –

+0

@NirajSazzie歡迎您! – Christos