我正在尝试使用部分匹配样式检查对象是否包含其中的另一个对象。
因此,以下示例应在{'a':{'b':'c'}
中找到对象myArray
两次。请注意,即使myArray[0]
对象在'e': 'f'
之上还有{'a':{'b':'c'}
的附加属性,但仍应将其视为包含{'a':{'b':'c'}
。
我想避免使用任何方法,例如reduce或map。
const myArray = [
{
'a': {
'b': 'c',
'e': 'f',
}
},
{
'a': {
'b': 'c'
}
},
{
'd': {
'e': 'f'
}
},
]
function contains(array, index, object) {
if () { // implementation???
return true
}
else {
return false
}
}
function quantityOfObjectInArray(object, array) {
var count = 0;
for (var i = 0; i < this.length; ++i) {
if ( contains(array, i, object) ) {
count++;
}
}
return count
}
var quantity = quantityOfObjectInArray({'a':{'b':'c'}}, myArray)
console.log(quantity) // expect: 2
答案 0 :(得分:0)
您可以使用Object.entries
递归地比较对象:
function has(obj, proto) {
for(const [key, value] of Object.entries(proto)) {
if(typeof value === "object") {
if(!obj[key] || !has(obj[key], value))
return false;
} else if(obj[key] !== value) {
return false;
}
}
return true;
}