Javascript 按值查找深嵌套对象中的对象
我想按值在深嵌套对象中查找对象Javascript 按值查找深嵌套对象中的对象,javascript,Javascript,我想按值在深嵌套对象中查找对象id。我试着用递归来实现,但不明白为什么会得到“未定义” 在这段代码中,我在控制台“final result:2343244”中找到了正确的结果,但由于某些原因,此结果不会从此函数返回 请看一看 让obj={ “uuid”:“344444”, “entityName”:“价格形成阶段”, “id”:2, “值”:“foo”, “儿童”:{ "4": { “uuid”:“44444”, “entityName”:“组织”, “id”:4, “值”:“ffffff”
id
。我试着用递归来实现,但不明白为什么会得到“未定义”
在这段代码中,我在控制台“final result:2343244”
中找到了正确的结果,但由于某些原因,此结果不会从此函数返回
请看一看
让obj={
“uuid”:“344444”,
“entityName”:“价格形成阶段”,
“id”:2,
“值”:“foo”,
“儿童”:{
"4": {
“uuid”:“44444”,
“entityName”:“组织”,
“id”:4,
“值”:“ffffff”,
“儿童”:{
"344534": {
“uuid”:“33333”,
“实体名称”:“合同”,
“id”:928688,
“值”:“dh”,
“儿童”:{
"345345": {
“uuid”:“22222”,
“entityName”:“合同阶段”,
“id”:2343244,
“值”:“111”,
“儿童”:{}
}
}
}
}
}
}
};
功能查找合同阶段(obj){
if((object.keys(obj.children.length>0)){
findContractStage(对象为儿童);
}else if(对象的类型[Object.keys(obj)[0]]=='Object'){
findContractStage(obj[Object.keys(obj)[0]]);
}else if(对象实体名称){
log(`final result:${obj.id}`);
返回obj.id;
}
}
让contractStageId=findContractStage(obj);
log(`contractStageId:${contractStageId}`)代码>您没有返回递归时得到的值。试试这个:
让obj={
“uuid”:“344444”,
“entityName”:“价格形成阶段”,
“id”:2,
“值”:“foo”,
“儿童”:{
"4": {
“uuid”:“44444”,
“entityName”:“组织”,
“id”:4,
“值”:“ffffff”,
“儿童”:{
"344534": {
“uuid”:“33333”,
“实体名称”:“合同”,
“id”:928688,
“值”:“dh”,
“儿童”:{
"345345": {
“uuid”:“22222”,
“entityName”:“合同阶段”,
“id”:2343244,
“值”:“111”,
“儿童”:{}
}
}
}
}
}
}
};
功能查找合同阶段(obj){
if((object.keys(obj.children.length>0)){
返回findContractStage(对象子对象);
}else if(对象的类型[Object.keys(obj)[0]]=='Object'){
return findContractStage(obj[Object.keys(obj)[0]]);
}else if(对象实体名称){
log(`final result:${obj.id}`);
返回obj.id;
}
}
让contractStageId=findContractStage(obj);
log(`contractStageId:${contractStageId}`)代码>您没有返回递归时得到的值。试试这个:
让obj={
“uuid”:“344444”,
“entityName”:“价格形成阶段”,
“id”:2,
“值”:“foo”,
“儿童”:{
"4": {
“uuid”:“44444”,
“entityName”:“组织”,
“id”:4,
“值”:“ffffff”,
“儿童”:{
"344534": {
“uuid”:“33333”,
“实体名称”:“合同”,
“id”:928688,
“值”:“dh”,
“儿童”:{
"345345": {
“uuid”:“22222”,
“entityName”:“合同阶段”,
“id”:2343244,
“值”:“111”,
“儿童”:{}
}
}
}
}
}
}
};
功能查找合同阶段(obj){
if((object.keys(obj.children.length>0)){
返回findContractStage(对象子对象);
}else if(对象的类型[Object.keys(obj)[0]]=='Object'){
return findContractStage(obj[Object.keys(obj)[0]]);
}else if(对象实体名称){
log(`final result:${obj.id}`);
返回obj.id;
}
}
让contractStageId=findContractStage(obj);
log(`contractStageId:${contractStageId}`)
您忘记了返回函数
让obj={
“uuid”:“344444”,
“entityName”:“价格形成阶段”,
“id”:2,
“值”:“foo”,
“儿童”:{
"4": {
“uuid”:“44444”,
“entityName”:“组织”,
“id”:4,
“值”:“ffffff”,
“儿童”:{
"344534": {
“uuid”:“33333”,
“实体名称”:“合同”,
“id”:928688,
“值”:“dh”,
“儿童”:{
"345345": {
“uuid”:“22222”,
“entityName”:“合同阶段”,
“id”:2343244,
“值”:“111”,
“儿童”:{}
}
}
}
}
}
}
};
功能查找合同阶段(obj){
if((object.keys(obj.children.length>0)){
返回findContractStage(对象子对象);
}else if(对象的类型[Object.keys(obj)[0]]=='Object'){
return findContractStage(obj[Object.keys(obj)[0]]);
}else if(对象实体名称){
log(`final result:${obj.id}`);
返回obj.id;
}
}
让contractStageId=findContractStage(obj);
log(`contractStageId:${contractStageId}`)
您忘记了返回函数
让obj={
“uuid”:“344444”,
“entityName”:“价格形成阶段”,
“id”:2,
“值”:“foo”,
“儿童”:{
"4": {
“uuid”:“44444”,
“entityName”:“组织”,
“id”:4,
“值”:“ffffff”,
“儿童”:{
"344534": {
“uuid”:“33333”,
“实体名称”:“合同”,
“id”:928688,
“值”:“dh”,
“儿童”:{
"345345": {
“uuid”:“22222”,
“entityName”:“合同阶段”,
“id”:2343244,
“值”:“111”,
“儿童”:{}
}
}
}
}