在Javascript中实现线性搜索算法

时间:2016-06-21 12:13:35

标签: javascript algorithm

我刚刚打开算法解锁的书,我正在尝试用Javascript中的书中的线性搜索来实现他们的伪代码。

这是我的代码

var answer = 'not found';

function LinearSearch(A,n,searchQuery) {
  for (var i = 0; i < A.length; i++) {
    if A[i] === value {
      answer = i;
    }
  }
}

var names = ["Jack", "Molly", "Tristan", "Jacob", "Steph"]

console.log(LinearSearch(names, names.length, "Jacob"));

我想知道我在这里做错了什么。

2 个答案:

答案 0 :(得分:1)

您的问题中有几个代码问题:

  • 值未定义,很可能您想使用searchQuery
  • 如果A [i] ===值(语法错误),则
  • 缺少括号
  • n从未使用过(所以我在下面的代码中删除了)
  • 缺少退货声明

&#13;
&#13;
    function linearSearch(data, searchQuery) {
      var answer = 'not found';
      for (var i = 0, len = data.length; i < len; i++) {
        if (data[i] === searchQuery) {
          answer = i;
        }
      }
      return answer;
    }

    var names = ["Jack", "Molly", "Tristan", "Jacob", "Steph"]
    var result = linearSearch(names, "Jacob");
    console.log(result);
&#13;
&#13;
&#13;

另外,您可以使用John发布的indexOf()。 或者您可以使用findIndex()使用更具异国情调的方法。

当你有一个对象数组并且需要获取索引my和object属性时,

findIndex()特别有用。您也可以使用forEach()使用相同的结果。

使用findIndex()的示例:

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex

&#13;
&#13;
function findIndexByName(data, name) {
  var result = data.findIndex(function(element, index, array) {
    if (element=== name) {
	    return true;
    }
    return false;
  });
  return result;
}
var data = ["Jack", "Molly", "Tristan", "Jacob", "Steph"];
var result = findIndexByName(data, "Jacob");
console.log(result);
&#13;
&#13;
&#13;

答案 1 :(得分:0)

试试这个:

var answer = 'not found';

function LinearSearch(A,n,searchQuery) {
  for (var i = 0; i < n; i++) {
    if( A[i] === searchQuery) {
      return i 
    }
  }
  return answer
}

var names = ["Jack", "Molly", "Tristan", "Jacob", "Steph"]

console.log(LinearSearch(names, names.length, "Jacob"));

语法错误:

第5行:将if A[i] === value更改为if( A[i] === searchQuery)

一个函数必须返回一些东西。

修改

您可以使用indexOf()方法获取简短代码。

var names = ["Jack", "Molly", "Tristan", "Jacob", "Steph"]
function LinearSearch(name){
  return names.indexOf(name) !== -1 ? names.indexOf(name) : 'not found'
}
console.log(LinearSearch("Tristan"))