簡體   English   中英

如何根據 javascript 中的值獲取匹配的數組 object

[英]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);

這是一個游樂場:

https://stackblitz.com/edit/js-6tmjcc

你可以這樣:

 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); } }

使用filterfindincludes方法。 如果您只需要一個 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM