簡體   English   中英

如何檢查數組是否包含對象

[英]How to check if array contains objects

我有從json創建的數組:

var array = [{"name":"name1","group":"group1","id":"123", ...},
{"name":"name2","group":"group2","id":"456", ...},
{"name":"name3","group":"group1","id":"789", ...}];

得到另一個數組后:

var array1 = [{"name":"name1","group":"group1","id":"123", ...},
{"name":"name4","group":"group1","id":"987", ...}]

我需要將項目從第二個數組推到第一個,但是如何檢查第一個數組是否包含第二個數組的對象?

數組中的每個對象都包含更多屬性,其中一些是動態創建的,因此我無法通過indexOf()檢查。 我發現的所有解決方案僅適用於Int類的簡單對象。 例如,如果我可以通過屬性“ id”進行檢查,那就太好了。

首先使用find

var newObj = {"name":"name2","group":"group2","id":"456"};
var value = array.find( s => s.id == newObj.id );  

現在,如果找不到該value則推送

if ( !value )
{
   array.push( newObj ) 
}

(更通用)您可以使用以下代碼執行這一行(它將添加所有不在數組中的對象)。

array.concat(array1.filter(x=>!array.find(s=>s.id==x.id)));

 var array = [{"name":"name1","group":"group1","id":"123"}, {"name":"name2","group":"group2","id":"456" }, {"name":"name3","group":"group1","id":"789"}]; var array1 = [{"name":"name1","group":"group1","id":"123"}, {"name":"name4","group":"group1","id":"987"}]; array=array.concat(array1.filter(x=>!array.find(s=>s.id==x.id))); console.log(array); 

暫無
暫無

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

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