簡體   English   中英

在對象數組內搜索

[英]Search inside array of objects

我有一個數組,其格式如下:

var clients = [{
    "id": 1, 
    "hash": 5c5fbbb047984ca8eec6dc7a3d994c09, 
    "more": {...}
  }, 
  {
    "id": 2,
    "hash": 620628ce37817a94476d55e55a543bee,
    "more": {...}
  }, 
  {...}, 
  {...}];

它包含大約25個對象,但這可以更改。 我的程序獲取一個ID,該ID是一個整數,它需要執行的操作是在clients數組中查找並找到具有指定ID的對象,然后從數組中刪除該對象。

鑒於可能存在相對大量的對象,最好的,最有效的方法是什么?

您可以像這樣使用Array.prototype.filter函數

var clients = [{"id": 1, "hash": "5c5fbbb047984ca8eec6dc7a3d994c09"},
               {"id": 2, "hash": "620628ce37817a94476d55e55a543bee"}];
var idToRemove = 1;

clients = clients.filter(function(currentObject) {
    return currentObject.id !== idToRemove;
});

console.log(clients);

輸出量

[ { id: 2, hash: '620628ce37817a94476d55e55a543bee' } ]

您可以遍歷數組並刪除具有給定id的條目。

function removeClient(clients, id) {
  for(var i = 0; i < clients.length; i++) {
    if(clients[i].id === id) {
      clients.splice(i, 1);
      return;
    }
  }
}

您也可以為此使用Array.prototype.filter函數,但是由於以下兩個原因,我更喜歡此迭代解決方案:

  • 一旦找到並刪除了客戶端,它就會退出,而不是總是遍歷整個數組。
  • 它適用於IE8及更低版本,而Array.prototype.filter是ECMAScript 5功能,直到IE9 IE才支持該功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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