javascript中线性搜索上的三元运算符正在工作
所以,我用JS实现了线性搜索,我尝试用三元运算符实现它,但它返回-1 我有以下代码:javascript中线性搜索上的三元运算符正在工作,javascript,conditional-operator,ternary,linear-search,Javascript,Conditional Operator,Ternary,Linear Search,所以,我用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); } } 问题是你在圈的第一圈返回, 您应该这样更改算法: const number=[1,2,
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);
}
}
问题是你在圈的第一圈返回, 您应该这样更改算法:
const number=[1,2,3,4,5];
线性函数(arr,值){
for(设i=0;i 控制台日志(线性(数字,3))代码>在第一个示例中,返回的次数太多。也就是说,您永远不会超过第一次迭代,因为您要么返回0(如果第一个元素匹配),要么返回-1(如果不匹配)。下面是一个建议的解决方案:
const number=[1,2,3,4,5];
线性函数(arr,值){
对于(设i=0;i
在第二个示例中,您也做了同样的事情,但除此之外,您似乎还不完全了解.forEach(callback)
中的回调是如何工作的(这意味着如果您在.forEach
中返回某个内容,则返回的值不会发生任何变化)。我不认为使用.forEach
是一种方法,但是如果你真的想使用它,你可以这样做:
函数线性2(arr,值){
让indexMatch=-1
arr.forEach((数量,索引)=>{
如果(值===num){
indexMatch=索引
}
}
返回索引匹配
}
这就是return
所做的,它立即中断当前函数的执行,并向调用者返回一个值。在您的情况下,循环总是在第一个索引上中断。
function linearSearch(arr, value) {
arr.forEach((num, index) => {
return (num === value ? index : -1);
})
}
const res = linearSearch(numbers, 3);
console.log(res);