有没有更快的方法在namesArray中找到任何名称?

时间:2018-05-11 06:54:52

标签: javascript

我是否可以在没有循环遍历每个数组项的情况下找到所需的名称? 有没有更快的方法来做同样的假设我有一个非常大的数组长度,因为如果我有一个10000项的数组并且其中不存在名称,那将是浪费时间并假设我们不做没有包容功能

$(document).ready(function() {
  function binarySearch(names, requiredName) {
    for (var i = 0; i < names.length; i++) {
      if (names[i] === requiredName) {
        return true;
      }
    }
    return false;
  }
  console.log(binarySearch(['ola', 'amer', 'anwar', 'mamon'], 'hadeel'));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

2 个答案:

答案 0 :(得分:0)

您可以像这样使用 Array#includes功能。

names.includes(requiredName)

如果您想确切知道项目所在的位置,您需要像现在一样进行迭代。

答案 1 :(得分:0)

您可以使用

var array = ["foo", "bar", "baz"];
var search = "foo"; 

// using the ES6 some function
var includes = array.some(val => val == search);
console.log(includes);

// using the find function
var found = array.find(val => val == search);
console.log(!!found); // or found != null

但最简单的方法是indexOf或includes(但还没有完整的浏览器支持)