比较对象数组:Ramda方式

有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实现这一点,我将不胜感激。


谢谢。


LEATH
浏览 576回答 4
4回答

跃然一笑

在非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));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript