Splice不适用于该对象(indexOf不是函数)

时间:2017-04-08 06:02:17

标签: javascript angularjs foreach splice

我有像

这样的对象
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:""} 所以我需要一个通用的解决方案。

1 个答案:

答案 0 :(得分: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);