Пример с деструктуризацией

Задачка для собеседования — написать функцию вычисления наибольшего общего делителя — НОД (GCD).

Наибольший общий делитель целых чисел — это наибольшее из натуральных чисел, которое делит каждое из данных чисел. Например gcd(30,15) = 15.

Пример решений на ES6+ с деструктуризацией

Цикл

function gcd(x, y) {
while (y != 0) [ x, y ] = [ y, x%y ]
return x
}

Рекурсивный вариант

const gcd = (x, y) => y == 0 ? x : gcd(...([ x, y ] = [ y, x%y ]))

Расширяем до N-аргументов

Далее можно попросить изменить решение так, чтобы можно было передать несколько аргументов. Можно, конечно, переписать реализацию, но я бы посоветовал использовать функциональный подход, превратив вышеописанную функцию в базовую, а отдельно написал бы входную функцию редьюсер:

// переименовываем gcd в gcd42n // 42n - for two numbers
// Создаем новую функцию редьюсер
const gcd = (...a) =>
a.reduce((a,i) => gcd42n(a,i), 0)
;
// Проверяем
gcd(16,-48,72) // 8