我有一个深度数组(数组的数组)。
我试图编写一个不使用任何额外方法和JS设计(如闭包)的良好函数。
以下是一个可行的解决方案(但由于全局变量而不好)。
我希望您能避免使用计数器输入参数,因为参数应该只是输入,并且输出变量不应该在函数参数内。此外,我想避免使用内置的方法,例如slice等。
注意:不应考虑算法的最佳性能。
有没有办法使计数器位于函数内部?
函数调用如下:
以下是一个可行的解决方案(但由于全局变量而不好)。
var counter = 0;
function findArray(array, item) {
for (var i = 0; i < array.length; i++) {
if (array[i] == item) {
counter++;
} else if (array[i].constructor === Array) {
findArray(array[i], item);
}
}
return counter;
}
这是一种无法工作的解决方案,试图避免全局计数器变量。
function findArray(array, item, counter) {
for (var i = 0; i < array.length; i++) {
if (array[i] == item) {
++counter;
}
if (array[i].constructor === Array) {
findArray(array[i], item, counter);
}
}
return counter;
}
我希望您能避免使用计数器输入参数,因为参数应该只是输入,并且输出变量不应该在函数参数内。此外,我想避免使用内置的方法,例如slice等。
注意:不应考虑算法的最佳性能。
有没有办法使计数器位于函数内部?
函数调用如下:
findArray([1,[1,2,3],1,[5,9,1],6], 1,0);
在这个例子中,应该输出数字4(整数1是要在数组中搜索的数字)。