преобразовать два массива в один js

Мне нужно отсортировть два массива. Суть в том, что у меня есть массив инструментов и есть массив инструментов, которые использовались недавно. Если недавние есть, то мы их должны показывать первыми.

Я написал такую функцию. Сначала я проверяю, есть ли недавно используемые инструменты, прохожусь по ним циклом и нахожу недавний используемый инструмент в общем массиве инструментов, это нужно, чтобы взять его вместе с полями, которые у него есть (это объект).

Затем я кладу его в пустой массив newArrTools и удаляю из allInstruments - это первоначальный массив со всеми инструментами.

Итого получается, мы имеем newArrTools массив, в котором по порядку лежат недавно используемые инструменты и allInstruments, в котором больше нет тех инструментов, которые использовались недавно.

Мы эти два массива конкатенируем newArrTools.concat(arrAllInstrumenta) и возвращаем общий массив, в котором все те же элементы, но те, которые использовались недавно, сейчас находятся на первом месте.

Но что-то тут не так, потому что первый раз функция отрабатывается правильно, а во второй раз мне возвращается массив на 2 айтема меньше (2 айтема были в последних используемых), как будто функция отрабатывает два раза и второй раз работает уже с другими данными.

Возможно нужно allInstrument не изменять, в общем подскажите, а то что-то никак!

  const newArrTools = [];
  const changeToolsArr = arrAllInstrumenta => {
    if (lastUsedTools?.tools.length) {
      for (let i = 0; i < lastUsedTools.tools.length; i += 1) {
        const newInst = arrAllInstrumenta.find(
          inst => inst.configName === lastUsedTools.tools[i]
        );

        if (newInst) {
          newArrTools.push(newInst);
        }
        // затем мы удаляем newInst из allInstruments

        // находим индекс элемента, который нужно удалить
        const indexForDelete = arrAllInstrumenta.indexOf(newInst);
        if (indexForDelete !== -1) {
          arrAllInstrumenta.splice(indexForDelete, 1);
        }
      }

      const tempArr = newArrTools.concat(arrAllInstrumenta);


      return tempArr;
    }
    return arrAllInstrumenta;
  };

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