Javascript Ramda-从数组中查找匹配的对象
从以下两个列表中,我需要从Javascript Ramda-从数组中查找匹配的对象,javascript,ramda.js,Javascript,Ramda.js,从以下两个列表中,我需要从list1和list2返回与list2中的head和tail值相匹配的list1对象 我试图使用ramdajs实现这一点 const list1 = [ { tail: 'A', head: 'B', distance: '5' }, { tail: 'B', head: 'C', distance: '4' }, { tail: 'C', head: 'D', distance: '8' }, { tail: 'D', head: 'C', dist
list1
和list2
返回与list2
中的head
和tail
值相匹配的list1
对象
我试图使用ramdajs
实现这一点
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' } ]
// result should be [{ tail: 'A', head: 'B', distance: '5' },
// { tail: 'B', head: 'C', distance: '4' }] from list1
嗯
Find将返回第一个匹配项。如果你想找到所有匹配的。将查找更改为筛选
const list = list1.find(item => {
return list2.findIndex(i => i.head === item.head && i.tail === item.tail) !== -1;
});
Find将返回第一个匹配项。如果你想找到所有匹配的。将
find
更改为filter
如果要使用ramdajs
可以使用来选择与谓词匹配的项,如下所示:
const list1=[
{尾部:'A',头部:'B',距离:'5'},
{尾:'B',头:'C',距离:'4'},
{尾部:'C',头部:'D',距离:'8'},
{尾部:“D”,头部:“C”,距离:“8'},
{尾:'D',头:'E',距离:'6'},
{尾:'A',头:'D',距离:'5'},
{尾部:'C',头部:'E',距离:'2'},
{尾部:'E',头部:'B',距离:'3'},
{尾:'A',头:'E',距离:'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,
清单1,
清单2
);
控制台日志(结果)代码>
如果要使用ramdajs
,可以使用来选择与谓词匹配的项,如下所示:
const list1=[
{尾部:'A',头部:'B',距离:'5'},
{尾:'B',头:'C',距离:'4'},
{尾部:'C',头部:'D',距离:'8'},
{尾部:“D”,头部:“C”,距离:“8'},
{尾:'D',头:'E',距离:'6'},
{尾:'A',头:'D',距离:'5'},
{尾部:'C',头部:'E',距离:'2'},
{尾部:'E',头部:'B',距离:'3'},
{尾:'A',头:'E',距离:'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,
清单1,
清单2
);
控制台日志(结果)代码>
我可以更简单地使用R.intersection,因为我有一个键列表,可以将其与对象上的R.keys进行比较。比我找到的其他选项要简单得多,因为这会让我找到一个Relation Ramda页面,我在搜索列表方法。我可以更简单地使用R.intersection,因为我有一个键列表,可以与对象上的R.keys进行比较。比我找到的其他选项要简单得多,因为这会让我找到一个relationramda页面,所以我在搜索列表方法。