Как добавить значение в массив в определенном месте с помощью JS - PullRequest
1 голос
/ 28 марта 2019

У меня есть массив объектов:

const array = [
  { id: 1 },
  { id: 2 },
  { id: 3 },
  { id: 4 }
];

, и мне нужно добавить в него еще одну запись, но она должна быть размещена в любом месте массива.Так, например:

array.push({ id: 5, after_id: 2 });, и это должно поместить новую запись между идентификаторами 2 и 3.Есть ли какой-нибудь стандартный способ сделать это?

1 Ответ

1 голос
/ 29 марта 2019

@p.s.w.g В своем комментарии уже опубликовано, что, вероятно, является лучшим решением, но я решил опубликовать свое оригинальное решение в качестве ответа, теперь оно открыто.

Вы можете использовать some для перебора массива до тех пор, пока не будет найден правильный индекс, затем вы можете нарезать массив и вставить элемент с соответствующим индексом:

const arrayTest = [{
    id: 1
  },
  {
    id: 2
  },
  {
    id: 3
  },
  {
    id: 4
  }
];

const insertAfterId = (array, item, idAfter) => {
  let index = 0;
  array.some((item, i) => {
    index = i + 1;
    return item.id === idAfter
  })

  return [
    ...array.slice(0, index),
    item,
    ...array.slice(index, array.length),
  ];
};

const result = insertAfterId(arrayTest, {
  id: 6
}, 2)
console.dir(result)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...