Здесь вам не нужна рекурсия (и я бы предпочел .reduceRight
), но здесь есть другой подход, который использует рекурсивную функцию на тот случай, если вам интересно, как это можно сделать. Вы можете деструктурировать первый элемент из вашего массива и использовать его в качестве ключа, а затем установить значение для следующего вызова, который приведет к созданию объекта. Если ключ не может быть получен, вы можете вернуть значение checked
:
const input = { regions: ["US", "CA", "LA"], checked: true };
const getNested = ([key, ...r], end) => key ? {[key]: getNested(r, end)} : end;
console.log(getNested(input.regions, input.checked));