Сравнение масивов с обьектами и выборка

362
16 февраля 2017, 00:13

Есть массив с обьектами "товаров" например.

someArr = [{name:***, prodid:***, prodinfo:***},{name:***, prodid:***, prodinfo:***}]

И больше в нем инфы разной. Есть еще один массив

someOtherArr = [{prodid:***},{prodid:***},{prodid:***}]

в нем только объекты с айди. как сравнить эти массивы и выбрать с someArr только те обьекты где есть айди с someOtherArr

Answer 1

А зачем во втором массиве объекты, если они содержат только одно поле? Почему бы не превратить 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))
Answer 2

Вариант много. Вот 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);

READ ALSO
Открытие модального окна fancybox 3 $.fancybox.open()

Открытие модального окна fancybox 3 $.fancybox.open()

Открываю модальное окно так:

497
Открытие двух модальных окон fancybox 2

Открытие двух модальных окон fancybox 2

Подскажите пожалуйстаМне нужно открыть модальное окно когда одно уже открыто

513
Странное поведение alert на onblur

Странное поведение alert на onblur

Нижеприведённый код после blur из пустого поля ввода бесконечно выдаёт alert

291
JavaScript Прокрутить страницу вниз

JavaScript Прокрутить страницу вниз

Как прокрутить веб страницу вниз при помощи чистого java scriptСтраница строится динамически по мере прокрутки вниз

662