javascript - 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, 2, 3, 4, 5];
console.log(numbers.indexOf(3));
推荐阅读
- ajax - Windows 10 更新以某种方式阻止了 Web 浏览器和 localhost 应用程序之间的 HTTP 连接
- android - 使用 twilio 通过 Android Kotlin 发送短信
- javascript - 使用 React 钩子时,实用程序函数的正确模式是什么?
- selenium - SeleniumIDE 3.12.1 - 无法验证下拉列表中的文本
- html - Bootstrap 4 nav nav-tabs 边框底部全宽屏幕
- java - 克隆实现未通过“等于”测试,调试时所有变量/字段都相同
- html - 如何从使用播放的 Youtube 视频中删除相关视频
- compiler-errors - 我应该如何调试这个 FileNotFoundError?
- c# - 有没有一种方法可以显示文件是“最后一次访问”而不是“最后一次修改”,在 C# 中还是它们相同?
- python-3.x - A CNN while working for a while crashes with no error in Keras and on a Centos 7 Cluster