Есть массив с обьектами "товаров" например.
someArr = [{name:***, prodid:***, prodinfo:***},{name:***, prodid:***, prodinfo:***}]
И больше в нем инфы разной. Есть еще один массив
someOtherArr = [{prodid:***},{prodid:***},{prodid:***}]
в нем только объекты с айди. как сравнить эти массивы и выбрать с someArr только те обьекты где есть айди с someOtherArr
А зачем во втором массиве объекты, если они содержат только одно поле? Почему бы не превратить someOtherArr в [prodid1, prodid2, prodid3, ...], тогда фильтрация в одну строку реализуется
Синтаксис es6
const someArr = [{name:***, prodid:***, prodinfo:***}, ...]
const someOtherArr = [prodid, prodid, prodid]
const filtredArr = someArr.filter(el => someOtherArr.includes(el.prodid))
includes как раз проверяет есть ли элемент в массиве, если да возвращает true
Если все таки структуру someOtherArr поменять изначально нельзя, то поменяем ее руками
const someArr = [{name:***, prodid:***, prodinfo:***}, ...]
const someOtherArr = [prodid, prodid, prodid]
// содержит значения prodid
const mapedOtherArr = someOtherArr.map(el => el.prodid)
const filtredArr = someArr.filter(el => mapedOtherArr.includes(el.prodid))
Вариант много. Вот 1 из них.
var someArr = [
{name:"name1", prodid:1, prodinfo:''},
{name:"name2", prodid:2, prodinfo:''},
{name:"name3", prodid:3, prodinfo:''},
{name:"name4", prodid:4, prodinfo:''},
];
var someOtherArr = [
{prodid:1},
{prodid:3},
{prodid:2}
]
var result = [];
for(var i = 0; i < someOtherArr.length; i++) {
result.push(someArr.find(function (item) {
return item.prodid == someOtherArr[i].prodid
}))
}
console.log(result);
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости