共有三个对象数组,如下所示:
sections = [{ _id: '123'}]
groups = [{ _id: '456', parent: '123' }]
items = [{ _id: '789', parent: '456' }]
这是一个有效的数据集。当然数组中有多个对象。
现在我想检查每个部分是否至少有一个子组,并且每个组至少有一个项目。
如果此检查失败,则应返回 false
值。
示例
sections = [{ _id: '123'}]
groups = [{ _id: '456', parent: '123' }]
items = [{ _id: '789', parent: 'something' }]
complete = false
在此示例中,应返回 false,因为该组没有子项。
我尝试从 forEach 循环开始,但这是一个错误的尝试:
let complete = true
sections.forEach(s => {
if (groups.filter(g => { return g.parent === s._id }).length === 0)
complete = false
})
最佳答案
看起来你有一个三个数组。两个包含用作父元素的对象,两个包含用作子元素的对象。您想要检查父级列表中的每个父级是否都有已定义的子级。
可以使用辅助函数 everyParentHasChild(parents, Children)
来实现此功能,该函数基于更高级别的数组方法 Array#every
和 构建数组#some
.
let sections = [{ _id: '123'}]
let groups = [{ _id: '456', parent: '123' }]
let items = [{ _id: '789', parent: '456' }]
let everyParentHasChild = (parents, children) => parents.every(
parent => children.some(child => child.parent === parent._id)
)
let result = everyParentHasChild(sections, groups) && everyParentHasChild(groups, items)
console.log(result) //=> true
关于javascript - JS/ES6 : Check if every array element has a child in another array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42592443/