簡體   English   中英

從javascript數組中刪除項目

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM