我有这个对象数组:
$scope.frequencies = [{Id:124,clientId:3,name:'qqq'},
{Id:589,clientId:1,name:'www'},
{Id:45,clientId:3, name:'eee'},
{Id:567,clientId:1,name:'rrr'},
{Id:45,clientId:3,name:'eee'},
{Id:567,clientId:7,name:'rrr'}]
我需要从上面的数组中删除所有项目,除非clientId = 3。
我该如何实施?
答案 0 :(得分:4)
不要删除,但要重新分配
var $scope = {};
$scope.frequencies = [{Id:124,clientId:3,name:'qqq'},
{Id:589,clientId:1,name:'www'},
{Id:45,clientId:3, name:'eee'},
{Id:567,clientId:1,name:'rrr'},
{Id:45,clientId:3,name:'eee'},
{Id:567,clientId:7,name:'rrr'}];
$scope.frequencies = $scope.frequencies.filter(item => item.clientId === 3);
console.log($scope.frequencies);

答案 1 :(得分:2)
您只需使用此代码段:
$scope.frequencies = $scope.frequencies.filter((item)=> item.Id!=3);
答案 2 :(得分:1)
在lodash中,您可以使用_.remove(array, [predicate=_.identity])
。
从
array
删除predicate
返回truthy的所有元素,并返回已删除元素的数组。使用三个参数调用谓词:(value,index,array)。
var $scope = {};
$scope.frequencies = [{ Id: 124, clientId: 3, name: 'qqq' }, { Id: 589, clientId: 1, name: 'www' }, { Id: 45, clientId: 3, name: 'eee' }, { Id: 567, clientId: 1, name: 'rrr' }, { Id: 45, clientId: 3, name: 'eee' }, { Id: 567, clientId: 7, name: 'rrr' }];
_.remove($scope.frequencies, a => a.clientId !== 3);
console.log($scope.frequencies);
.as-console-wrapper { max-height: 100% !important; top: 0; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.15.0/lodash.min.js"></script>
答案 3 :(得分:0)
使用基于比较的过滤方法,它返回符合过滤器的元素数组。在ES5上:
$scope.frequencies.filter(function(element){
return element.clientId == 3;
})
更新,ES6:
$scope.frequencies.filter( element => element.clientId != 3)
检查过滤器文档:filter