我似乎无法弄清楚为什么我的递归搜索不会递归。
你看到了什么问题吗?我在错误的地方有haystack[i]
吗?因为我没有看到它。我试过在这个网站上看一些例子,但我不知道这么简单。
search = function(needle, haystack) {
len = haystack.length;
for (var i = 0; i < len; i++)
{
if (typeof haystack[i] == 'object') {
search(needle, haystack[i])
} else {
if (needle == haystack[i]) {
console.log('found');
return;
}
console.log('value: ' + haystack[i])
}
}
}
var test = [[1], [2], [3,4], [5,6]]
search(4, test)
或者看小提琴@ http://jsfiddle.net/aniyishay/TBMmK/(打开控制台)
答案 0 :(得分:3)
var
前面缺少len
,它应该是var len = haystack.length;
,否则会被视为全局变量。
当haystack = [[1],[2],[3,4],[5,6]]然后len = 4但是再次调用search(4, [1])
然后len = 1
被激活然后当循环返回值len = 1
而不是原始值4,因为它是一个全局变量。现在i = 2且len = 1所以循环存在