首页 > 解决方案 > 我无法返回对象

问题描述

我有一个这样的对象:

const obj = {
  name: 'john',
  children: [
    {
      name: 'Foo'
    },
    {
      name: 'Bar',
      children: [
        {
          name: 'Doe'
        }
      ]
    }
  ]
}

我必须创建一个函数来查找具有指定名称的对象。我的代码可以找到具有名称的对象,但它不返回该对象。

const search = (node, name) => {
  return searchInObj(node, name);
};

const searchInObj = (obj, name) => {
  if (obj.name === nodeName) {
    return obj;
  } else {
    if (obj.children) {
      searchInArr(obj.children, name);
    }
  }
};

const searchInArr = (arr, name) => {
  for (let i = 0; i < arr.length; i++) {
    searchInObj(arr[i], name);
  }
};

如果我把

console.log(search(obj, 'Doe')) // return undefined

如果我寻找它就可以了john

标签: javascriptfunctionobject

解决方案


只需添加return语句,就像@quentin 说的

const obj = {
  name: 'john',
  children: [
    {
      name: 'Foo'
    },
    {
      name: 'Bar',
      children: [
        {
          name: 'Doe'
        }
      ]
    }
  ]
}

const search = (node, name) => {
  return searchInObj(node, name);
};

const searchInObj = (obj, name) => {
  // Typo here? what is nodeName
  if (obj.name === name) {
    return obj;
  } else {
    if (obj.children) {
      // Added return 
      return searchInArr(obj.children, name);
    }
  }
};

const searchInArr = (arr, name) => {
  for (let i = 0; i < arr.length; i++) {
    // Return if found
    const result = searchInObj(arr[i], name);
    if (result !== undefined) return result
  }
};

console.log(search(obj, 'Doe'))


推荐阅读