Как получить подмассив из родительского массива по свойству объектов из которых он состоит?

Есть такой массив:

let array = [
  {
    id: 0,
    info: 'asd',
    info2: 123124,
  },
  {
    id: 1,
    info: 'gdfg',
    info2: 756,
  },
  {
    id: 2,
    info: '76tijy',
    info2: 153,
  },
  {
    id: 3,
    info: 'asfss',
    info2: 14235,
  },
  {
    id: 4,
    info: 'qwerf',
    info2: 6545648,
  }
]

Нужно динамически получать из него подмассив, вырезанный по двум id:

function getSubArray(array, id1, id2) {
  //...
  //найти объект с id1 в array
  //найти объект с id2 в array
  //поместить все объекты между ними в subArray
  return subArray;
}

Используя эту функцию, она бы возвращала массив, состоящий из всех элементов array начиная с id1 и заканчивая id2. К примеру:

console.log(getSubArray(array, 1, 3));  
//Console:
/*

  {
    id: 1,
    info: 'gdfg',
    info2: 756,
  },
  {
    id: 2,
    info: '76tijy',
    info2: 153,
  },
  {
    id: 3,
    info: 'asfss',
    info2: 14235,
  }
  
*/

Как можно реализовать подобный функционал?


Ответы (1 шт):

Автор решения: vsemozhebuty

Например, так:

let array = [
  {
    id: 0,
    info: 'asd',
    info2: 123124,
  },
  {
    id: 1,
    info: 'gdfg',
    info2: 756,
  },
  {
    id: 2,
    info: '76tijy',
    info2: 153,
  },
  {
    id: 3,
    info: 'asfss',
    info2: 14235,
  },
  {
    id: 4,
    info: 'qwerf',
    info2: 6545648,
  }
];

function getSubArray(array, id1, id2) {
  const subArray = [];

  for (const object of array) {
    const id = object.id;
    if (id >= id1 && id <= id2) subArray.push(object);
  }

  return subArray;
}

console.log(getSubArray(array, 1, 3));

Если массив отсортирован по id, можно обрывать цикл после выхода за максимум.

→ Ссылка