为了账号安全,请及时绑定邮箱和手机立即绑定

比较对象数组:Ramda方式

比较对象数组:Ramda方式

LEATH 2019-04-17 14:15:04
有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));


查看完整回答
反对 回复 2019-05-17
  • 4 回答
  • 0 关注
  • 573 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信