Объединить 2 массива по определенным индексам в Javascript ⇐ Javascript
-
Anonymous
Объединить 2 массива по определенным индексам в Javascript
У меня есть массив target, скажем: [A, C, E, F, H]. У меня есть еще один массив toMerge, который нужно объединить с target, скажем: [B, D, G, I]. У меня также есть целочисленный массив, который сообщает индексам целевого массива, где элементы toMerge будут окончательно объединены, скажем: [1, 3, 6, 8]. Мне нужна функция, которая объединит массив toMerge с target на месте, по индексам, указанным массивом indices, чтобы цель в итоге выглядит так
[A(0), B(1), C(2), D(3), E(4), F(5), G(6), H(7), I(8 )] Я попробовал использовать встроенные функции объединения массивов для перебора массива индексов и сращивания (добавления) каждого по каждому индексу. Что-то в этом роде:
for (let i = 0; i < index.length; i++) { target.splice(indices, 0, toMerge); } Я ищу любое решение, которое позволит сделать это более эффективно и элегантно.
Все становится сложнее, если массив index не отсортирован или, что еще хуже, отсортирован обратно! Например,
toMerge: [I, G, D, B] индексы: [8, 6, 3, 1] после применения описанного выше алгоритма target будет выглядеть следующим образом:
цель: [A, B, C, E, D, F, H, I, G] Одним из решений этой проблемы является сортировка массива indices в неубывающем порядке вместе с массивом toMerge, гарантируя соблюдение последовательности, что еще больше усложняет ситуацию.
>
У меня есть массив target, скажем: [A, C, E, F, H]. У меня есть еще один массив toMerge, который нужно объединить с target, скажем: [B, D, G, I]. У меня также есть целочисленный массив, который сообщает индексам целевого массива, где элементы toMerge будут окончательно объединены, скажем: [1, 3, 6, 8]. Мне нужна функция, которая объединит массив toMerge с target на месте, по индексам, указанным массивом indices, чтобы цель в итоге выглядит так
[A(0), B(1), C(2), D(3), E(4), F(5), G(6), H(7), I(8 )] Я попробовал использовать встроенные функции объединения массивов для перебора массива индексов и сращивания (добавления) каждого по каждому индексу. Что-то в этом роде:
for (let i = 0; i < index.length; i++) { target.splice(indices, 0, toMerge); } Я ищу любое решение, которое позволит сделать это более эффективно и элегантно.
Все становится сложнее, если массив index не отсортирован или, что еще хуже, отсортирован обратно! Например,
toMerge: [I, G, D, B] индексы: [8, 6, 3, 1] после применения описанного выше алгоритма target будет выглядеть следующим образом:
цель: [A, B, C, E, D, F, H, I, G] Одним из решений этой проблемы является сортировка массива indices в неубывающем порядке вместе с массивом toMerge, гарантируя соблюдение последовательности, что еще больше усложняет ситуацию.
>
Мобильная версия