鑒于我有兩個物件,如果它們至少有一個屬性匹配(some或any),最簡單的比較方法是什么?我不是在物件 B 中尋找整個物件 A 的完全匹配,而是在物件 B 中尋找部分物件 A 的匹配。
{
name: "John",
age: 23,
city: "London"
}
// and
{
name: "Craig",
age: 47,
city: "London"
}
// returns true
{
name: "Adrian",
age: 32,
city: "Sofia"
}
// and
{
name: "Tom",
age: 44,
city: "Oslo"
}
// returns false
我已經通過 lodash (isMatch) 嘗試了幾個部分匹配函式,但它們似乎執行全對一些或全對全匹配,而我正在尋找一些對一些。
uj5u.com熱心網友回復:
如果您只是檢查它們是否有任何共同點:
const john = { name: "John", age: 23, city: "London" }
const craig = { name: "Craig", age: 47, city: "London" }
const adrian = { name: "Adrian", age: 32, city: "Sofia" }
const tom = { name: "Tom", age: 44, city: "Oslo" }
function hasAnythingInCommon(obj1, obj2) {
for (const key in obj1) {
if(obj1[key] === obj2[key]) return true
}
return false
}
console.log(hasAnythingInCommon(john, craig))
console.log(hasAnythingInCommon(adrian, tom))
簡短說明:
for (const key in obj1):回圈遍歷第一個物件中的所有鍵。if(obj1[key] === obj2[key]) return true:如果兩個物件在其中一個鍵上的值一致,則true立即回傳。return false:如果你通過整個回圈而不回傳true,那么它們沒有共同點,我們回傳false。
uj5u.com熱心網友回復:
最簡單的方法是簡單地列出所有屬性作為比較:
const compare = (a, b) => a.name === b.name || a.age === b.age || a.city === b.city;
更通用的版本是:
const compare = (a, b) => Object.entries(a).some(([key, value]) => value === b[key]);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/416663.html
標籤:
上一篇:搜索字串以查找陣列的所有元素
