Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.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,我编写了一个函数来搜索嵌套对象。问题是它返回undefined,而不是正确记录在控制台中的预期结果。那里发生了什么事 constin1=[1,2]; 常数in2=[1,2]; 常数vDOM={ 1: { 参考号:1, 儿童:{ 2: { 参考:in2, 儿童:{} } } } } const findVDOMNode=函数(实例,vDOM){ 常量键=对象键(vDOM); const foundKey=keys.find(key=>vDOM[key].ref==instance); //con

我编写了一个函数来搜索嵌套对象。问题是它返回
undefined
,而不是正确记录在控制台中的预期结果。那里发生了什么事

constin1=[1,2];
常数in2=[1,2];
常数vDOM={
1: {
参考号:1,
儿童:{
2: {
参考:in2,
儿童:{}
}
}
}
}
const findVDOMNode=函数(实例,vDOM){
常量键=对象键(vDOM);
const foundKey=keys.find(key=>vDOM[key].ref==instance);
//console.log(foundKey,vDOM,“FK”);
如果(!keys.length){
console.log(“无键”);
返回;
}
if(foundKey){
log('found',vDOM[foundKey]);
返回true;//vDOM[foundKey];
};
key.map(key=>
findVDOMNode(实例,vDOM[key].children));
}

log('res:',findVDOMNode(in2,vDOM))只需在末尾添加
return

return keys.map(key =>
    findVDOMNode(instance, vDOM[key].children));
您可以获取对象的值并对照实例进行检查。如果找到对象,请同时检查该对象。对于迭代,如果找到实例,则使用短路的
some

const
in1=[1,2],
in2=[1,2],
vDOM={1:{ref:in1,子项:{2:{ref:in2,子项:{}},
findVDOMNode=(实例,vDOM)=>对象
.值(vDOM)
.some(v=>v===实例
||v&&typeof v==='object'&&findVDOMNode(实例,v)
);

log('res:',findVDOMNode(in2,vDOM))在函数的最后一行中,映射上似乎缺少一条return语句

constin1=[1,2];
常数in2=[1,2];
常数vDOM={
1: {
参考号:1,
儿童:{
2: {
参考:in2,
儿童:{}
}
}
}
}
const findVDOMNode=函数(实例,vDOM){
常量键=对象键(vDOM);
const foundKey=keys.find(key=>vDOM[key].ref==instance);
//console.log(foundKey,vDOM,“FK”);
如果(!keys.length){
console.log(“无键”);
返回;
}
if(foundKey){
log('found',vDOM[foundKey]);
返回true;//vDOM[foundKey];
};
///添加了此返回语句
返回key.map(key=>
findVDOMNode(实例,vDOM[key].children));
}

log('res:',findVDOMNode(in2,vDOM))
在任何情况下,您都不会返回您登录到控制台的值……但他必须这样做吗?为什么它在1
中对
有效?@Akaino定义“工作”。现在还不清楚期望的结果到底是什么。您想记录真/假还是值?我猜-函数名
findVDOMNode
表明OP需要节点,如果必须是
true/false
name应该是
hasVDOMNode
,这将为in2
中的
返回一个数组,为in1
中的
返回
true
。为什么?我认为这是递归,因为一旦找到一个键,他就会返回
true
。对。但是map在这里是错误的工具,因为结果应该是一个布尔值…OP想要的是对象,而不是布尔值。直到最近还不清楚。