我想盡可能有效地找到任意數量的對象之間的交集。這些對象都包含其他子對象,每個子對象都存儲在父級上的唯一鍵下。出於我的目的,可以肯定的是,當比較對象1上的子對象a與對象2上的子對象a時,內容是相同的,所以我不在乎是否一個覆蓋另一個。到目前爲止,這是我一起工作的解決方案,但恐怕它是沒有效率不夠:任意數量的對象的交集
function intersectObjects(...objects){
/*NOTE: This function will overwrite values on duplicate keys*/
var returnObj; //temp variable to store the return value
objects.forEach((obj, i) => {
//on the first loop store my object
if (i == 0) returnObj = obj;
else {
//Get an array of all properties currently being returned
const returnProps = Object.getOwnPropertyNames(returnObj);
//Loop over the properties array
returnProps.forEach((propKey, j) => {
//If the current property does not exist on the return object
//Then delete the property on the return object
if(!obj[returnProps[j]]) delete returnObj[returnProps[j]];
});
}
});
return returnObj;
}
有沒有更有效的解決方案呢?有沒有一個圖書館能夠有效地處理這個功能和功能?有沒有這樣的功能,我不知道?將不勝感激任何這些問題的答案。
這正是我所期待的,儘管有點難以理解。非常感謝! –