当前位置: 首页 > 面试题库 >

查找项目是否在JavaScript数组中的最佳方法?

关玮
2023-03-14
问题内容

查找对象是否在数组中的最佳方法是什么?

这是我知道的最好方法:

function include(arr, obj) {

  for (var i = 0; i < arr.length; i++) {

    if (arr[i] == obj) return true;

  }

}



console.log(include([1, 2, 3, 4], 3)); // true

console.log(include([1, 2, 3, 4], 6)); // undefined

问题答案:

从ECMAScript 2016开始,您可以使用 includes()

arr.includes(obj);

如果要支持IE或其他较旧的浏览器:

function include(arr,obj) {
    return (arr.indexOf(obj) != -1);
}

编辑:这将无法在IE6、7或8上运行。最好的解决方法是自行定义它(如果不存在):

  1. Mozilla)版本:

      if (!Array.prototype.indexOf)
    

    {

       Array.prototype.indexOf = function(searchElement /*, fromIndex */)
    
    {
    
    "use strict";
    
    if (this === void 0 || this === null)
      throw new TypeError();
    
    var t = Object(this);
    var len = t.length >>> 0;
    if (len === 0)
      return -1;
    
    var n = 0;
    if (arguments.length > 0)
    {
      n = Number(arguments[1]);
      if (n !== n)
        n = 0;
      else if (n !== 0 && n !== (1 / 0) && n !== -(1 / 0))
        n = (n > 0 || -1) * Math.floor(Math.abs(n));
    }
    
    if (n >= len)
      return -1;
    
    var k = n >= 0
          ? n
          : Math.max(len - Math.abs(n), 0);
    
    for (; k < len; k++)
    {
      if (k in t && t[k] === searchElement)
        return k;
    }
    return -1;
    

    };

    }

  2. Daniel James的版本:

    if (!Array.prototype.indexOf) {
    

    Array.prototype.indexOf = function (obj, fromIndex) {
    if (fromIndex == null) {
    fromIndex = 0;
    } else if (fromIndex < 0) {
    fromIndex = Math.max(0, this.length + fromIndex);
    }
    for (var i = fromIndex, j = this.length; i < j; i++) {
    if (this[i] === obj)
    return i;
    }
    return -1;
    };
    }


  3. roosteronacid’s 版本:

    Array.prototype.hasObject = (
    

    !Array.indexOf ? function (o)
    {
    var l = this.length + 1;
    while (l -= 1)
    {
    if (this[l - 1] === o)
    {
    return true;
    }
    }
    return false;
    } : function (o)
    {
    return (this.indexOf(o) !== -1);
    }
    );



 类似资料:
  • 问题内容: 我有这样的示例列表: 现在,我检查它是否具有空字符串,如下所示: 这可以正常工作,因为它可以打印True,但是是否需要更多的pythonik方法? 问题答案: 您可以使用: 万一如果内部列表更大(超过100个项目),则与生成器一起使用的速度将比上面的示例更快,因为这样,使用Python for循环的速度代价将由快速操作来补偿: 时序比较:

  • 在JavaScript中,检查两个数组是否具有相同/相等的值(以任何顺序)的最佳方法是什么? 这些值只是数据库实体的主键所以它们总是不同的 方法应该是什么样子的? 另外,这个问题看起来像是重复的,但我没有找到任何与Javascript相关的东西。

  • 我需要使用php读取目录中的所有文件。所以我需要这样的回报 我的文件如下所示: 现在一切正常,但是在运行之前我必须自己输入这些文件。如何从目录中发布所有文件?现在我有这样的: 我尝试了用lolob()、scandir()和readdir(),但是我没有得到想要的结果。谢谢!

  • 根据问题标题,我使用: 有没有更好的办法?

  • 问题内容: 查看URL存在并且响应不是404的最佳方法是什么? 问题答案: 您可以使用 手册中的示例2 : 第一个数组元素将包含HTTP响应状态代码。您必须解析它。 请注意,示例中的函数将发出HTTP HEAD请求,这意味着它将不会获取URL的正文。这比使用GET请求(也将返回正文)更有效。 还要注意,通过设置 默认 上下文,任何使用http流上下文的后续调用现在都将发出HEAD请求。因此,确保完

  • 问题内容: 我有一个游标,带有来自选择的值,我想根据我是否发现任何行来做点什么。 这似乎不起作用,有帮助吗? 问题答案: 您需要在使用%FOUND属性之前对游标执行FETCH。将您的代码更改为类似 请注意,您可能需要将变量添加到FETCH语句的INTO子句中,在TABLE1和TABLE2中的每一列都需要添加一个变量。还要注意,编写此游标的方式可能会获得比预期更多的返回行。因为没有指定连接条件,所以