2017-04-08 64 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