Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   фильтр массив обьектов (https://javascript.ru/forum/misc/76051-filtr-massiv-obektov.html)

korih 29.11.2018 14:09

фильтр массив обьектов
 
Добрый день уважаемые форумчане.
помогите разобраться в одном вопросе. у меня есть два массива объектов, к примеру:
let obj1 = [
 {id:1, name="вася"},
 {id:2, name="петя"},
 {id:3, name="маша"},
 {id:4, name="даша"}
]
let obj2 = [
 {id:1},
 {id:2}
]


и мне нужно вывести объекты где id obj2 совпадает с obj1

запутался с фильтрами и сортировками, в итоге у меня получается достичь цели, но код выглядет громостким и "грязным"

SuperZen 29.11.2018 14:23

только "ослах" не будет работать %)
let obj1 = [
    { id: 1, name: "вася" },
    { id: 2, name: "петя" },
    { id: 3, name: "маша" },
    { id: 4, name: "даша" }
  ]
  let obj2 = [
    { id: 1 },
    { id: 2 }
  ]
  let obj2Keys = obj2.map(o2 => o2.id)
  let result = obj1.filter(o1 => obj2Keys.includes(o1.id))
  console.log(result)

j0hnik 29.11.2018 14:27

SuperZen,
лишний цикл
let obj1 = [
 {id:1, name:"вася"},
 {id:2, name:"петя"},
 {id:3, name:"маша"},
 {id:4, name:"даша"}
];
let obj2 = [
 {id:1},
 {id:2}
];

var filtred = obj1.filter(el=> obj2.some(el2=> el2.id==el.id));
console.log(filtred);

SuperZen 29.11.2018 14:34

j0hnik, Ок )

korih 29.11.2018 14:36

спасибо вам большое :)


Часовой пояс GMT +3, время: 23:13.