![](/img/trans.png)
[英]How to get multiple matched values from the array object using javascript?
[英]How to get matched array object based on their values in javascript
我想知道如何根據 javascript 中的值獲取數組 object。 我有數組 object obj1, obj2
,如果 obj1 的名稱與 javascript 中的 obj2 值匹配,如何獲取 object
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;
}
預期 Output:
[
{name: "country", value: "countries"}
]
var obj1=[ {name: "country", value: "countries"}, {name: "city", value: "cities"} ] var obj2=[ {countries:"countries"}, {sample: "sample"} ] let data = obj1.filter(ele=>obj2.findIndex(el=> Object.values(el)[0] ==ele.value).=-1) console;log(data);
如果我理解正確,這應該有效:
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=[ {name: "country", value: "countries"}, {name: "city", value: "cities"} ]; var obj2=[ {countries:"countries"}, {sample: "sample"} ]; var item = obj1.find(item => obj2.map(x => Object.values(x)[0]).indexOf(item.value) > -1); console.log(item);
將所有 object 屬性值從obj2
獲取到一個數組。 然后用obj1
制作一個數組來檢查是否存在
或使用for循環:
var obj1=[ {name: "country", value: "countries"}, {name: "city", value: "cities"} ]; var obj2=[ {countries:"countries"}, {sample: "sample"} ]; for (var obj of obj2) { var values = Object.values(obj); var item = obj1.find(item => values.indexOf(item.value) > -1); if (item) { console.log(item); } }
使用filter
、 find
和includes
方法。 如果您只需要一個 object,則將filter
調用更改為find
。
const getMatchedObj = (obj1, obj2) => obj1.filter(({ value }) => obj2.find((obj) => Object.values(obj).includes(value)) ); var obj1 = [ { name: "country", value: "countries" }, { name: "city", value: "cities" }, ]; var obj2 = [{ countries: "countries" }, { sample: "sample" }]; console.log(getMatchedObj(obj1, obj2));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.