从javascript数组中删除项目

时间:2016-09-01 06:38:16

标签: javascript lodash

我有这个对象数组:

$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。

我该如何实施?

4 个答案:

答案 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