[英]Removing items from javascript array
我有這個對象數組:
$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.filter(item => item.clientId === 3); console.log($scope.frequencies);
您可以簡單地使用以下代碼片段:
$scope.frequencies = $scope.frequencies.filter((item)=> item.Id!=3);
在lodash中,您可以使用_.remove(array, [predicate=_.identity])
。
從
predicate
返回true的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>
使用基於比較的過濾器方法,它返回滿足過濾器條件的元素數組。 在ES5上:
$scope.frequencies.filter(function(element){
return element.clientId == 3;
})
在更新的ES6中:
$scope.frequencies.filter( element => element.clientId != 3)
查看過濾器文檔: 過濾器
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.