我刚刚打开算法解锁的书,我正在尝试用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"));
我想知道我在这里做错了什么。
答案 0 :(得分:1)
您的问题中有几个代码问题:
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;
另外,您可以使用John发布的indexOf()。 或者您可以使用findIndex()使用更具异国情调的方法。
当你有一个对象数组并且需要获取索引my和object属性时, findIndex()
特别有用。您也可以使用forEach()
使用相同的结果。
使用findIndex()的示例:
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex
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;
答案 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"))