我下面有两个对象。
如您所见,我如何检查 objectB 是否属于 objectA ,因为这两个对象的所有字段都相同,并且 objectB 的字段是 objectA 的 casts字段的子级。
ObjectA = {
title: 'Alita: Battle Angel',
year: '2019',
casts:
[ 'Rosa Salazar',
'Christoph Waltz',
'Jennifer Connelly',
'Mahershala Ali',
'Michelle Rodriguez',
'Casper Van Dien' ] }
ObjectB = {
title: 'Alita: Battle Angel',
casts:
[ 'Rosa Salazar',
' Christoph Waltz' ],
year: '2019' },
答案 0 :(得分:1)
函数isObjectBelong
接收两个参数:
rootObject
-包含cats
字符串数组属性的对象childObject
-包含cats
字符串数组属性的对象如果true
包含childObject.cats
的子集,则函数返回rootObject.cats
,否则返回false
。
const isObjectBelong = (rootObject, childObject) =>
childObject.casts.every(r => rootObject.casts.includes(r));
答案 1 :(得分:1)
对于您的特定用例,应执行以下操作。
ObjectA = {
title: 'Alita: Battle Angel',
year: '2019',
casts: ['Rosa Salazar',
'Christoph Waltz',
'Jennifer Connelly',
'Mahershala Ali',
'Michelle Rodriguez',
'Casper Van Dien'
]
}
ObjectB = {
title: 'Alita: Battle Angel',
casts: ['Rosa Salazar',
'Christoph Waltz'
],
year: '2019'
}
ObjectC = {
title: 'Alita: Battle Angel',
casts: ['Rosa Salazar',
'Someone else'
],
year: '2019'
}
const isSubset = (parentObject, childObject, isProper) => {
if ((parentObject.title === childObject.title) && (parentObject.year === childObject.year)) {
const casts = childObject.casts.filter(cast => parentObject.casts.find(originalCast => originalCast === cast))
return isProper ? (casts.length === childObject.casts.length) : Boolean(casts.length)
}
return false
}
console.log(isSubset(ObjectA, ObjectB))
console.log(isSubset(ObjectA, ObjectC))
console.log(isSubset(ObjectA, ObjectB, true))
console.log(isSubset(ObjectA, ObjectC, true))
我添加了一些检查和一个名为isProper的附加参数。 isProper将检查父级中是否存在子级中的所有演员。添加更多内容后,检查代码失败的可能性就较小。