我在数组中有如下记录:
$scope.skills = [];
$scope.skills['et']= s1
$scope.skills['et']= s2
$scope.skills['et']= s3
$scope.skills['gf']= t1
$scope.skills['gf']= t2
$scope.skills['gf']= t3
$scope.skills['po']= b1
$scope.skills['po']= b2
$scope.skills['po']= b3现在我想根据下面的值删除数组中的所有记录:
$scope.value ='gf';现在我想从数组中删除索引不是‘gf’的所有记录:
因此技能数组应该只包含'gf‘记录,如下所示:
预期输出:
$scope.skills['gf']= t1
$scope.skills['gf']= t2
$scope.skills['gf']= t3发布于 2016-12-08 22:52:58
您应该能够遍历数组对象中的所有键,并删除不需要的键。
for(var k in Object.keys($scope.skills)){
if(k !== "gf"){
delete $scope.skills[k];
}
}作为附注,对于键的每次赋值,您将在以下代码之后覆盖该值
$scope.skills['gf']= t1
$scope.skills['gf']= t2
$scope.skills['gf']= t3$scope.skills['gf']的值将是变量t3的值。
发布于 2016-12-08 22:51:55
我认为你的例子在概念上有问题。将倍增值分配给同一属性将覆盖以前的分配。
无论如何,如果您只需要一个对象的单个属性,则可以只使用该属性创建一个新对象:
$scope.skills = $scope.skills['gf'];发布于 2016-12-08 23:01:21
您需要更改“数组”的结构,以便能够存储具有相同键的多个项。
示例:
$scope.skills = [];
$scope.skills.push({key: 'et', value: 's1'});
$scope.skills.push({key: 'et', value: 's2'});
$scope.skills.push({key: 'et', value: 's3'});
$scope.skills.push({key: 'gf', value: 't1'});
$scope.skills.push({key: 'gf', value: 't2'});
$scope.skills.push({key: 'gf', value: 't3'});
$scope.skills.push({key: 'po', value: 'b1'});
$scope.skills.push({key: 'po', value: 'b2'});
$scope.skills.push({key: 'po', value: 'b3'});现在您可以像这样删除:
$scope.keyToDelete = 'gf';
for(var i = $scope.skills.length - 1; i >= 0; i--) {
if($scope.skills[i].key === $scope.keyToDelete) {
$scope.skills.splice(i, 1);
}
});https://stackoverflow.com/questions/41042124
复制相似问题