Установить значение в массиве, чтобы ввести объект уменьшить / вернуть значение внутри объекта - PullRequest
0 голосов
/ 10 июня 2018

Следующее должно вывести "Yuval"

console.log(pathFind(["book", "author", "name"], {
  book: {
    author: {
      name: "Yuval"
    }
  }
}));

Я пытался написать эту функцию, но она продолжает возвращать undefined:

function pathFind(path, object) {
  return path.reduce((accumulator, name) => {
    if(accumulator && accumulator[name] != typeof 'object') {
      accumulator[name]
    } else {
      undefined, object
    }
  })
} 

Чего мне не хватает?(опечатка?)

Есть ли способ использовать рекурсию внутри этой функции в сочетании с Reduce?(т.е. как к этому подойти к рекурсии?)

1 Ответ

0 голосов
/ 10 июня 2018

Попробуйте следующее:

var obj = {
      book: {
        author: {
          name: "Yuval"         
        }       
      }
 };
 var path = ["book", "author", "name"];
 function findPath(obj, path){
    if(path.length === 0) return obj;
    return findPath(obj[path[0]], path.slice(1));
}
console.log(findPath(obj,path));
...