如何在javascript中根据数组对象的值获取匹配的数组对象

如何在javascript中根据数组对象的值获取匹配的数组对象,javascript,arrays,object,Javascript,Arrays,Object,我想知道如何基于javascript中的值获取数组对象。 我有数组objectobj1,obj2,如果obj1的名称与javascript中的obj2值匹配,如何获取对象 var obj1=[ {name: "country", value: "countries"}, {name: "city", value: "cities"} ] var obj2=[ {countries:"countries"}, {sample: "sample"} ] var result = th

我想知道如何基于javascript中的值获取数组对象。 我有数组object
obj1,obj2
,如果obj1的名称与javascript中的obj2值匹配,如何获取对象

var obj1=[
  {name: "country", value: "countries"},
  {name: "city", value: "cities"}
]
var obj2=[
  {countries:"countries"},
  {sample: "sample"}
]
var result = this.getMatchedObj(obj1, obj2);

function getMatchedObj(obj){
    const newlist = obj1.map((elem) => obj2.find(e=>Object.values(e)===elem.value));
    return newlist;
}

预期产出:

[
 {name: "country", value: "countries"}
]

如果我理解正确,这应该是可行的:

var obj1=[
  {name: "country", value: "countries"},
  {name: "city", value: "cities"}
]
var obj2=[
  {countries:"countries"},
  {sample: "sample"}
]

function getMatchedObj(obj1, obj2){
    const values = obj2.reduce((acc, cur) => acc.concat(Object.values(cur)),[]);
    const newlist = obj1.filter(({value}) => values.includes(value));
    return newlist;
}
const result = getMatchedObj(obj1, obj2);
console.log(result);
这里是一个游乐场:

您可以:

var obj1=[
{名称:“国家”,值:“国家”},
{名称:“城市”,值:“城市”}
];
var obj2=[
{国家:“国家”},
{样本:“样本”}
];
var item=obj1.find(item=>obj2.map(x=>Object.values(x)[0]).indexOf(item.value)>-1);

控制台日志(项目)使用
过滤器
查找
包含
方法。 如果只需要一个对象,则将
过滤器
调用更改为
查找

const getMatchedObj=(obj1,obj2)=>
obj1.filter({value})=>
obj2.find((obj)=>Object.values(obj.includes(value))
);
变量obj1=[
{名称:“国家”,值:“国家”},
{名称:“城市”,值:“城市”},
];
var obj2=[{countries:“countries”},{sample:“sample”}];
console.log(getMatchedObj(obj1,obj2))
var obj1=[
{名称:“国家”,值:“国家”},
{名称:“城市”,值:“城市”}
]
var obj2=[
{国家:“国家”},
{样本:“样本”}
]
让数据=obj1.filter(ele=>obj2.findIndex(el=>Object.values(el)[0]==ele.value)!=-1)
控制台日志(数据);