Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 按值查找深嵌套对象中的对象_Javascript - Fatal编程技术网

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”,
“儿童”:{}
}
}
}
}