微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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,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 举报,一经查实,本站将立刻删除。