Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript中线性搜索上的三元运算符正在工作_Javascript_Conditional Operator_Ternary_Linear Search - Fatal编程技术网

javascript中线性搜索上的三元运算符正在工作

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,

所以,我用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,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);