Javascript 包含重复函数won';你不能返回真值吗?
为什么“返回真实”在这里不起作用?相反,函数返回未定义的Javascript 包含重复函数won';你不能返回真值吗?,javascript,function,oop,recursion,Javascript,Function,Oop,Recursion,为什么“返回真实”在这里不起作用?相反,函数返回未定义的 var containsDuplicate = function(nums) { let newArray = nums; let p = newArray.pop(); if (newArray.includes(p)) { return true; } else if (newArray) { containsDuplicate(newArray); }
var containsDuplicate = function(nums) {
let newArray = nums;
let p = newArray.pop();
if (newArray.includes(p)) {
return true;
}
else if (newArray) {
containsDuplicate(newArray);
}
else {
return false;
}
};
编辑:
我用如下方式调用函数:
console.log(containsDuplicate([1,2,3,9,9,0]))
您应该使用浏览器调试器进行调试,但根据经验,我的观点是,您可能将newarray设置为null,如果nums声明不正确,就会出现这种情况。如果newarray为null,If检查将抛出异常而不求值。递归函数之前缺少return语句
var containsDuplicate = function(nums) {
let newArray = nums;
let p = newArray.pop();
if (newArray.includes(p)) {
return true;
}
else if (newArray) {
return containsDuplicate(newArray);
}
else {
return false;
}
};
因为
的块包含重复(newArray)代码>不返回任何内容。由于newArray.includes(p)
,函数也很糟糕。使用hashmap对象:
var keys = {}
for (let i = 0, c = arr.length; i < c; i++) {
let v = arr[i];
if (!keys[v]) {
keys[v] = true;
} else {
return true;
}
}
return false;
var-keys={}
for(设i=0,c=arr.length;i
您需要返回递归调用
var containsDuplicate=函数(nums){
设newArray=nums;
设p=newArray.pop();
if(newArray.includes(p)){
返回true;
}else if(newArray){
返回包含副本(newArray);
}否则{
返回false;
}
};
log(包含重复([1,2,3,9,9,0]))
如果要删除重复项,请查看以下答案:。这是一个简单得多的方法…而且内部的“containsDuplicate”不会返回其值?谢谢,但我知道如何删除重复项。以一套为例。我对这个奇怪的bug特别感兴趣。你忘了返回递归调用。谢谢!这确实是递归之前缺少的返回。。。