从javascript数组中删除项

从javascript数组中删除项,javascript,lodash,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'}, {I

我有一组对象:

$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的情况除外


如何实现它?

不删除,而是使用重新分配

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.filteritem=>item.clientId==3;
console.log$scope.frequencies 使用filter方法,该方法基于比较返回符合筛选器的元素数组。关于ES5:

$scope.frequencies.filter(function(element){
   return element.clientId == 3; 
})
在较新的ES6上:

$scope.frequencies.filter( element => element.clientId != 3)

检查筛选器文档:

您只需使用以下代码段即可:

 $scope.frequencies = $scope.frequencies.filter((item)=> item.Id!=3);
在lodash中,您可以使用

从谓词返回truthy for的数组中删除所有元素,并返回一个已删除元素的数组。谓词由三个参数调用:值、索引、数组

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,name:'rrr'}; _.删除$scope.frequencies,a=>a.clientId!==3. console.log$scope.frequencies; .作为控制台包装{最大高度:100%!重要;顶部:0;}
你能展示一下到目前为止你都做了些什么吗?可能重复的请,你应该让OP分享他的努力。这是一个非常常见的问题,您不应该回答这样的问题。Arraysplice用于就地更改-只是说,因为您不能总是重新分配阵列而没有不必要的副作用。您使用的是什么。splice?a.length中的a是什么?我错了,我编辑了它,而不是a.length,它是$scope.frequencies.lengthOK,这让我回到为什么要使用.splice?它是多余的,因为使用params 0,$scope.frequencies.length,它的返回值将是.filter生成的数组中的所有项,因此没有它,您将得到相同的结果…是的,您是对的,它是多余的,不需要拼接。我们可以简单地将过滤器值分配给$scope.frequencies。