Необходимо сравнить элементы массива с ключами объекта

Есть функция, которая принимает первым параметром объект, вторым - массив из цепочки свойств, по которому нужно пройти, чтобы получить значение.

Если какое-то из свойств не найдено или массив пустой - функция возвращает undefined.

Пример:

const obj = {
  a: {
    b: {
      c: {
        d: 'Привет!'
      }
    }
  }
}

optionalChaining(obj, ["a", "b", "c", "d"]) // Привет

optionalChaining(obj, ["a", "b", "c", "d", "e"]) // undefined

Ответы (1 шт):

Автор решения: HTMLProgrammer

function optionalChaining(obj, path){
    let cur = obj;
    
    for(prop of path){
        if(cur[prop])
            cur = cur[prop];
        else
            return undefined;
    }
    
    return cur;
}

const obj = {a: {b: {c: {d: 'Привет!'}}}};

console.log(optionalChaining(obj, ['a', 'b', 'c', 'd']));
console.log(optionalChaining(obj, ['a', 'b', 'c', 'd', 'e']));

→ Ссылка