有2个对象数组,第一个是const blocks = [ { id: 1 }, { id: 2 }, { id: 3 },]第二个是const containers = [ { block: { id: 1 } }, { block: { id: 2 } }, { block: { id: 3 } },]我想获取blocks数组,从中获取每个对象,并查找containers数组是否具有此类ID的块。因此,如果至少找不到一个id,那么我想断开循环并返回false,否则如果发现所有id都返回true。我试图用.some()函数实现这个,但是当找不到id时我无法打破循环。如果你建议Ramda实现这一点,我将不胜感激。谢谢。
4 回答
跃然一笑
TA贡献1826条经验 获得超6个赞
在非ramda方式中,您可以将每个对象与其他项进行比较并使用深度检查。
const
deep = id => o =>
o && typeof o === 'object' && (o.id === id || Object.values(o).some(deep(id))),
compare = (source, target) => source.every(({ id }) => target.some(deep(id))),
blocks = [ { id: 1 }, { id: 2 }, { id: 3 }],
containers = [{ block: { id: 1 } }, { block: { id: 2 } }, { block: { id: 3 } }]
console.log(compare(blocks, containers));
添加回答
举报
0/150
提交
取消