javascript - 我无法返回对象
问题描述
我有一个这样的对象:
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
解决方案
只需添加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'))
推荐阅读
- snowflake-cloud-data-platform - 在 Snowflake 中,如何正确授予对由另一个角色创建和编辑的数据库上的角色的读取权限?
- python - 在 Python 中将 TXT 转换为 CSV
- javascript - args 在函数的同一个查询中,而不在每个函数中提及它
- shapefile - 将压缩的 shapefile 添加到 react-leaflet 地图
- java - 绑定两个没有中间Entity的Entity spring data jpa
- hyperledger-fabric - Hyperledger Fabric fabcar - 对等链代码和 500 次访问错误 - CLI
- spring - 在 Rancher 中部署 Spring Cloud 数据流的问题
- asp.net-mvc - 如何通过在 dot net core 中调用控制器操作来加载布局页面内的视图?
- java - Javers 需要审计数据的保留策略
- rest - RESTful API 设计 - CRUD op。& 可选操作,都在一个请求中?