Javascript 使用递归查找数组中的坐标
我需要使用下划线JS和递归遍历数组,并将坐标推送到一个新数组。代码在递归调用函数之前就已经开始工作了,因此如何提高递归集成Javascript 使用递归查找数组中的坐标,javascript,recursion,underscore.js,Javascript,Recursion,Underscore.js,我需要使用下划线JS和递归遍历数组,并将坐标推送到一个新数组。代码在递归调用函数之前就已经开始工作了,因此如何提高递归集成 var array = [[1, 23, 5, 6], [7, 9, 37, 34]]; function search(num, column) { var boolean = _.contains(array[column], num), coordinates = []; if (boolean === true) {
var array = [[1, 23, 5, 6],
[7, 9, 37, 34]];
function search(num, column) {
var boolean = _.contains(array[column], num),
coordinates = [];
if (boolean === true) {
coordinates.push(_.indexOf(array[column], num));
coordinates.push(column);
console.log(coordinates);
} else if (boolean === false) {
return search(num, column++);
} else if (column === array.length) {
if(boolean === false) {
console.log('No number present');
}
}
}
search(9, 0);
您对
column===array.length
的检查位于错误的位置,永远不会被调用。此外,column++
将增加column,但将返回旧值,因此每次调用search
,列为0。改用列+1
试试这个:
function search(num, column) {
if (!column) {
// This statement allows you to omit the column parameter.
// So you can call 'search(9);' and it will assume the column is 0.
column = 0;
}
if (column >= array.length) {
console.log('No number present');
return null;
}
if (_.contains(array[column], num)) {
var coordinates = [_.indexOf(array[column], num), column];
console.log(coordinates);
return coordinates;
} else {
return search(num, column + 1);
}
}
我不知道你想要什么结果。是否应该是包含搜索项的所有嵌套数组?我也不知道你为什么要对2D数组进行递归,但我知道你的第二个
else if
将永远无法到达。