Как в массив вставить новое число которое будет находится между меньшим и большим его числами?
Есть массив
const arr = [10,15,16,19,23,25,34];
Есть число
const number = 21;
Как вставить это число по возрастанию в массив, т.е. между 19 и 23?
Чтобы массив стал таким:
[10,15,16,19,21,23,25,34]
Массив всегда возрастающий.
Ответы (2 шт):
Можно сделать так:
const arr = [10, 15, 16, 19, 23, 25, 34]
const number = 21
arr.push(number)
arr.sort()
console.log(arr)
Учитывая что
Массив всегда возрастающий
, можно просто найти индекс первого встреченного элемента со значением больше вставляемого числа - и по этому индексу выполнить вставку:
const arr = [10,15,16,19,23,25,34];
const number = 21;
const idx = arr.findIndex(v => v > number);
arr.splice(idx > -1 ? idx : arr.length, 0, number);
console.log(JSON.stringify(arr));
Если в массиве не нашлось значения больше чем вставляемое (и findIndex вернул -1), помещаем новый элемент в конец массива (вместо idx в качестве индекса используя array.length, то есть индекс следующий за индексом самого последнего элемента).
Алгоритм можно улучшить, вместо поиска последовательным перебором применив двоичный поиск (например). Тема алгоритмов поиска в отсортированном массиве - за рамками предмета данного вопроса, но информации на эту тему в сети предостаточно.