Неделю назад я участвовал в пробном техническом интервью по JavaScript.

Учитывая массив чисел в порядке возрастания, вернуть новый массив результатов в квадрате также в порядке возрастания.

Ввод: [-8, -5, -2, 0, 3, 7, 10]

Выход: [0, 4, 9, 25, 49, 64, 100]

Моим первым шагом было создание функции sortedSquaredNumbers. Эта функция будет иметь цикл for, который выполняет итерацию по каждому индексу в массиве, возводит его в квадрат, помещает результат в новый массив, а затем возвращает этот новый массив.

function sortedSquaredNumbers(array) {
    const squaredArray = []
    for (let i = 0; i < array.length; i++) {
        const squared = array[i]**2
        squaredArray.push(squared)
    }
    return squaredArray.sort(function(a, b){return a - b})
}

Используя встроенный метод сортировки, я передаю функцию, чтобы указать, как я хочу сортировать массив. В противном случае результат, который мы получим, будет [0, 100, 25, 4, 49, 64, 9]. Это связано с тем, что метод JavaScript sort() преобразует каждый элемент в строку, а затем сортирует строки по unicode.

Это было коротко и мило, верно? Тем не менее, есть одна вещь, которую следует отметить в отношении sort().

Сложность сортировки по времени и пространству не может быть гарантирована, поскольку она зависит от реализации.

Так что, если бы мы получили массив, который был бы намного больше, чем наш пример? Было бы лучше создать собственный метод сортировки, который бы обрабатывал бесконечно растущие массивы. Как вы думаете, вы готовы принять вызов?