Вернуть индексы нужного объекта

96
08 апреля 2021, 23:40

нужно получить индекс объекта с нужным ключём. Имеется массив:

let arr = [[{id: 1, name: 'admin', ob: 3},{id: 2, name: 'user 1', ob: 4}, {}],[{id: 3, name: 'admin 2', ob: 6},{id: 4, name: 'user 2', ob: 1}, {}],[{id: 5, name: 'admin 3', ob: 1},{id: 6, name: 'user 3', ob: 1}, {}]];

Как можно получить индекс объекта с id: 5, что бы получить arr[2][0].

$.each(arr, function (i, member) {
                for (let i in member) {
                    console.log(member.find(x => x.id === id));
                }
            });

Пробовал перебрать через each, но не дало нужного результата, в каком направлении двигаться?

Answer 1

вариант 1: перебрать большой массив и и на каждой итерации перебирать маленький и сравнивать id

let arr = [[{id: 1, name: 'admin', ob: 3},{id: 2, name: 'user 1', ob: 4}, {}],[{id: 3, name: 'admin 2', ob: 6},{id: 4, name: 'user 2', ob: 1}, {}],[{id: 5, name: 'admin 3', ob: 1},{id: 6, name: 'user 3', ob: 1}, {}]]; 
 
arr.forEach((elem, index) => { 
  elem.forEach((el, i) => { 
    if(el.id === 5){ 
      console.log(index, i); 
    } 
  }); 
});

Вариант 2: по сути то же самое, только с использование findIndex

let arr = [[{id: 1, name: 'admin', ob: 3},{id: 2, name: 'user 1', ob: 4}, {}],[{id: 3, name: 'admin 2', ob: 6},{id: 4, name: 'user 2', ob: 1}, {}],[{id: 5, name: 'admin 3', ob: 1},{id: 6, name: 'user 3', ob: 1}, {}]]; 
 
arr.forEach((elem, index) => { 
  const i = elem.findIndex((x) => x.id === 5); 
  if(i !== -1){ 
    console.log(index, i); 
  } 
});