如何解决javascript中线性搜索的三元运算符现在可以工作了
所以,我在 JS 中实现了线性搜索,我尝试用三元运算符实现它,但它返回 -1...
const numbers = [1,2,3,4,5];
function linear(arr,value) {
for (let i = 0; i < arr.length; ++i) {
return (arr[i] === value ? i : -1);
}
}
当我运行 console.log(linear(numbers,3))
时,结果是 -1,而 3 在我的数组中。有人吗?
此外,当我尝试使用 forEach 时,它会在此处返回未定义的代码:
function linearSearch(arr,value) {
arr.forEach((num,index) => {
return (num === value ? index : -1);
})
}
const res = linearSearch(numbers,3);
console.log(res);
解决方法
问题是你在圈子的第一个循环处返回, 你应该像这样改变你的算法:
const numbers = [1,2,3,4,5];
function linear(arr,value) {
for (let i = 0; i < arr.length; i++) {
if (arr[i] === value) {
return i;
}
}
return -1;
}
console.log(linear(numbers,3));
但是,如果您不需要该算法的显式实现,那么使用内置的 indexOf
函数将是一个更简洁的版本:
const numbers = [1,5];
console.log(numbers.indexOf(3));
在您的第一个示例中,您经常返回。意思是,你永远不会比你的第一次迭代更进一步,因为你要么返回 0(如果第一个元素匹配)或 -1 如果它不匹配。这是一个建议的修复:
const numbers = [1,value) {
for (let i = 0; i < arr.length; ++i) {
if(arr[i] === value) {
return i
}
}
return -1
}
在第二个例子中,你做了同样的事情,但除此之外,你似乎没有完全理解 .forEach(callback)
中的回调是如何工作的(意味着如果你在 {{1} }},该返回值没有任何反应)。我认为 .forEach
不适合这里,但如果您真的想使用它,您可以这样做:
.forEach
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。