我想過濾掉兩個物件中都有的鍵值對。有兩個物件:
first = {a:3, b:4}。
second = {a:5 , b:4}。
我使用下面的代碼來解決這個問題:
c = {}。
for (const key of Object.keys(first)) {
for( const k of Object.keys(second)){
if ( key == k){
if ( first[key]==second[k]){
c[key] = first[key]
}
}
}
}
這樣做很好,給我的輸出是{b:4},但對于下面的測驗輸入值,我得到的輸出是空物件,我不確定如何檢查那些共同但不相等的值。
first = {a: 3, b: {x:7}}。
second = {a: 4, b: {x: 7, y: 10}}。
這里的輸出應該是:
{b: {x:7}}。
uj5u.com熱心網友回復:
你可以對嵌套的物件采取遞回的方法,檢查共同的鍵和共同的值,或者如果兩個值都是物件,就取嵌套物件的共同值。
。function getCommon(a, b) {
const isObject = o => typeof o === 'object;
return Object.fromEntries(Object)。
.keys(a)
.filter(Set.prototype。 has, new Set(Object.keys(b))
. filter(k => a[k] === b[k] || isObject(a[k]) && isObject(b[k]) )
.map(k => [k, isObject(a[k]) ? getCommon(a[k], b[k]) : a[k]] )
);
}
console.log(getCommon({ a。3, b: { x: }, { a: 4, b: { x: 7, y: 10 }) ;: y: 10 } });
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/329128.html
標籤:
上一篇:動態生成的深層物件
