Splice 不适用于对象(indexOf 不是函数)
Splice is not working for the object(indexOf is not a function)
我有一个像
这样的对象
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:""}
所以我需要一个通用的解决方案。
您不能使用 splice
方法删除对象 属性。除了这样做,您还可以使用 delete
运算符。
angular.forEach($scope.test,function(value,key){
if(value==""){
delete $scope.test[key]
}
});
有关此运算符的更多信息,请查看 here。下面我有一个 plain 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);
我有一个像
这样的对象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:""}
所以我需要一个通用的解决方案。
您不能使用 splice
方法删除对象 属性。除了这样做,您还可以使用 delete
运算符。
angular.forEach($scope.test,function(value,key){
if(value==""){
delete $scope.test[key]
}
});
有关此运算符的更多信息,请查看 here。下面我有一个 plain 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);