首页 > 解决方案 > 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);

标签: javascriptconditional-operatorternarylinear-search

解决方案


问题是你在你的圈子的第一个循环中返回,你应该像这样改变你的算法:

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));


推荐阅读