我需要使用下划线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) {
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);发布于 2015-05-16 23:54:05
您对column === array.length的检查位置错误,永远不会被调用。此外,column++将增加列的值,但返回旧值,因此每次都会调用列为0的search。请改用column + 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);
}
}https://stackoverflow.com/questions/30277624
复制相似问题