如何在javascript中根据数组对象的值获取匹配的数组对象
我想知道如何基于javascript中的值获取数组对象。 我有数组object如何在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
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)
控制台日志(数据);