Ramda - 查找与数组匹配的对象

时间:2018-01-15 23:56:13

标签: javascript ramda.js

从以下两个列表list1list2中,我需要从list1返回与headtail的值匹配的对象{ {1}}。

我试图使用list2实现此目的。

ramdajs

2 个答案:

答案 0 :(得分:3)

如果您想使用ramdajs,可以使用innerJoin选择与谓词匹配的项目:

const list1 = [ 
  { tail: 'A', head: 'B', distance: '5' },
  { tail: 'B', head: 'C', distance: '4' },
  { tail: 'C', head: 'D', distance: '8' },
  { tail: 'D', head: 'C', distance: '8' },
  { tail: 'D', head: 'E', distance: '6' },
  { tail: 'A', head: 'D', distance: '5' },
  { tail: 'C', head: 'E', distance: '2' },
  { tail: 'E', head: 'B', distance: '3' },
  { tail: 'A', head: 'E', distance: '7' } 
];

const list2 = [ { tail: 'A', head: 'B' }, { tail: 'B', head: 'C' } ];

const result = R.innerJoin(
  (item1, item2) => item1.tail === item2.tail && item1.head === item2.head,
  list1,
  list2
);

console.log(result);
<script src="//cdnjs.cloudflare.com/ajax/libs/ramda/0.25.0/ramda.min.js"></script>

答案 1 :(得分:1)

呀。

const list = list1.find(item => {
     return list2.findIndex(i => i.head === item.head && i.tail === item.tail) !== -1;
});

查找将返回第一场比赛。如果你想找到所有的比赛。将find更改为filter