Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Ramda-从数组中查找匹配的对象_Javascript_Ramda.js - Fatal编程技术网

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页面,所以我在搜索列表方法。