Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用递归查找数组中的坐标_Javascript_Recursion_Underscore.js - Fatal编程技术网

Javascript 使用递归查找数组中的坐标

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) {

我需要使用下划线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);

您对
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
将永远无法到达。