查找某个项目是否在 JavaScript 数组中的最佳方法? [复制]

2023-11-22

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

这是我所知道的最好的方法:

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. 莫斯拉的(ECMA-262) 版本:

       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. 丹尼尔·詹姆斯的版本:

     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. 雄鸡酸的版本:

     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);
       }
     );
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

查找某个项目是否在 JavaScript 数组中的最佳方法? [复制] 的相关文章

  • 使用智能菜单jquery打印json

    menu name Computers children name Notebook children name Apple name Windows name Tablets children name Apple name Androi
  • 整个页面都是玻璃板

    有没有一种简单的方法可以在整个 HTML 页面上拥有一个 玻璃窗格 而不管缩放 幻灯片事件 平台 浏览器 移动 桌面 我所说的 简单 是指纯 CSS 支持 而不是插件 后备 插件建议也可能有用 Thanks 如果您只是指所有内容之上的一层
  • 将图像缩略图上传到服务器,而不上传整个图像

    据我所知 我在这里问的是不可能的 但我想无论如何我都会问 以防我遗漏了什么 假设您想让用户上传 JPG 图像 并且这些图像被缩放为较小的图标 并且原始图像始终被丢弃并且不再需要 有没有什么方法可以在大多数现代浏览器中普遍使用 让用户选择硬盘
  • Node.js Google-云存储上传目的地规范

    我有一个 Node js 服务器并且正在使用谷歌云上传一些图像文件的包Firebase 存储 上传本身工作正常 但 google cloud API 似乎只能将文件上传到 Firebase Storage 根文件夹 有没有办法指定远程位置来
  • 粉碎一个元素,向随机方向发送碎片

    我试图 粉碎 一个元素 例如 一个图像 并将其碎片朝随机方向飞行 当碎片到达目的地时 即x距离 以像素为单位 它们变成原始图像的较小版本 jQuery UI 的explode http api jqueryui com explode ef
  • 尝试使用 CasperJS 跟踪 iframe 中的链接

    我正在尝试使用CasperJS http casperjs org index html跟踪 iframe 中的链接 但我似乎无法获取 iframe 的文档 这是使用我找到的 iframe 示例页面进行的测试 第三个 iframe 有一个名
  • 按日期对 JSON 进行排序

    我知道这一定相对简单 但我有一个 JSON 数据集 我想按日期排序 到目前为止 我每次都会遇到问题 现在我将日期存储为this lastUpdated 如果有帮助的话 我可以访问 jquery 但我意识到 sort 是本机 JS 提前致谢
  • 使用 Javascript 对象模型在 SharePoint 任务上设置“分配给”

    我想创建一个共享点任务并将其分配给我自己 当前用户 在 javascript 对象模型中 我有下面的代码 但我认为我需要设置 spusercollection 对象 而不是设置特定用户 但是 我似乎无法在任何地方找到如何执行此操作的任何示例
  • 无法提取 Typescript 中的对象值

    我一直在尝试将 JavaScript Web 表单转换为 Typescript 但无法弄清楚如何处理以下内容 在 JavaScript 中有效 let fieldValues JSON parse cookieData let keys O
  • Javascript“命名空间”和 jQuery AJAX

    我正在使用此处列出的建议 http www odetocode com articles 473 aspx http www odetocode com articles 473 aspx 使用模拟的JavaScript AJAX网络聊天系
  • Backbone.js 应用程序可以逐步增强并可供搜索引擎抓取吗?

    我需要为我的下一个项目实现一个 MVC JavaScript 框架 但它既是一个网站 又是一个 Web 应用程序 是否可以公开数据服务器端 然后解析 URL 以显示 JS 版本 我计划使用 Rails 作为服务器端代码 我写了一个关于这个主
  • numpy 数组最快的保存和加载选项

    我有一个生成二维的脚本numpy数组与dtype float和形状的顺序 1e3 1e6 现在我正在使用np save and np load对数组执行 IO 操作 然而 这些函数对于每个数组都需要几秒钟的时间 是否有更快的方法来保存和加载
  • 如何使用javascript从特定标签获取HTML文档中的所有textNode?

    如何在不使用xpath或treewalker的情况下从单个数组中的一组特定标签中获取所有textNodes blockquote em h4 h6 p IE不允许您使用xpath和treewalker 请帮助我 如果脚本仅适用于 IE 那就
  • D3 时间解析返回 null

    根据此页面上的说明 https github com mbostock d3 wiki Time Formatting https github com mbostock d3 wiki Time Formatting我正在尝试解析 ISO
  • 如何将输入字段值作为 URL 查询字符串传递,单击提交按钮将打开该字符串?

    我必须输入这样的字段
  • 加载 angularjs 路由后运行 javascript 代码

    我需要在 angularjs 加载路线后显示警报 显示警报的代码位于 angularjs 异步加载的视图中 视图加载后 我希望它能够运行 但它没有 我知道我可以广播并告诉它稍后运行等 但我需要一个更通用的解决方案 假设您正在谈论基于以下内容
  • 正则表达式获取两个方括号之间的数字

    您好 我需要使用正则表达式在 JavaScript 中获取两对方括号内的字符串 这是我的字符串 12 23 asd 到目前为止我尝试的是使用这种模式 d 我需要获得价值12使用正则表达式 您可以使用以下正则表达式 d 这将提取12 from
  • 限制线的长度

    我正在尝试画一条代表 弹弓 的线 并且希望它具有最大拉伸长度 在 p5 中 我在位置和位置之间画了一条线 line posA x posA y posB x posB y posA 是鼠标 x 和 y posB 是画布上圆的位置 我想要做的
  • onClick 事件适用于触摸屏设备上的触摸吗?

    我用过onclick我的网站上的活动 但是 当我在谷歌浏览器的开发人员模式移动视图中打开它时 触摸使用鼠标单击的元素没有任何反应 所以我的问题是 我还必须添加吗ontouch事件连同onclick事件或 onClick 事件适用于所有触摸屏
  • Modernizr 未将类应用于 html 标签

    我目前正在构建一个网站 我需要使用 Modernizr 但由于某种原因 它没有将类应用到 html 标签 因为它应该 我的代码如下所示

随机推荐

  • 使用 Mockito 进行 Retrofit 2 api 调用的单元测试

    我需要一些关于如何模拟 Rest api 的建议 我的应用程序采用 MVP 架构 我的API接口 public interface MyAPI GET cmd userName password Observable
  • python 中浮点数末尾的后缀 e+number 是什么意思? [复制]

    这个问题在这里已经有答案了 I use random uniform 1 2 100 产生范围内的随机浮点数 0 2 100 一些结果是 gt gt gt random uniform 1 2 100 5 9798650563331964e
  • 原则 2 中的代理人是什么?

    我刚刚读完所有 Doctrine 2 文档 我开始了自己的沙箱 我理解了大部分原理 但仍然有一个问题 我在文档中找不到任何完整的解释 什么是Proxy课程 我什么时候应该在实体上使用它们 据我了解 代理类添加了一个层 让您可以向实体添加一些
  • 当字符串包含html实体时,在Javascript中设置文本节点的nodeValue

    当我设置文本节点的值时 node nodeValue string with xxxx sort of characters 符号被转义 是否有捷径可寻 您需要对 Unicode 字符使用 Javascript 转义 node nodeVa
  • 为什么没有调用 AccountAuthenticator#getAuthToken() ?

    我通过扩展创建了自己的 Android 帐户身份验证器AbstractAccountAuthenticator并实施addAccount and getAuthToken 其中的一些方法被调用AccountManager 但其他人则不然 这
  • 从头开始构建 Eclipse IDE - 制作更大的图标有时会成功

    Even the newest Eclipse Neon edition has still somewhat small icons on a 4k display That is why I m trying to make them
  • 如何在 ASP.NET 中全局设置日期格式?

    如何在 ASP NET 中全局设置日期格式 我的本地计算机和服务器的区域设置设置为 英语 新西兰 当我格式化日期时dd MM yyyy我期待看到19 11 2008以今天为例 直到最近 这实际上是我从本地计算机和服务器上获得的 就在最近 由
  • 如何使用 Spring Security hasRole 常量

    我有一个带有 Spring Security 的 JSP 我有一个简单的标签来确定用户是否有ADMIN像这样的角色
  • PyBrain:如何在神经网络中放置特定的权重?

    我试图根据给定的事实重新创建一个神经网络 它有 3 个输入 一个隐藏层和一个输出 我的问题是权重也给定了 所以我不需要训练 我在想也许我可以保存类似结构神经网络的训练并相应地改变值 你认为这会起作用吗 还有其他想法吗 谢谢 神经网络代码 n
  • Android 耳机插孔监听器

    有谁知道如何在 Android 上检测设备上的耳机插孔是否已拔出 我有一个音乐播放器 当拔掉耳机时我需要暂停音乐 我发现的最接近的东西是使用AudioManager 这是正确的方向吗 这就是我最终所做的 private class Nois
  • 强制粘贴事件以 Base64 编码图像

    背景 我正在为我的公司开发一个 HTML5 Web 应用程序 它基本上是一个将信息存储在数据库中的富文本编辑器 类似于 Google 文档 我们使用 CKEditor 3 作为富文本编辑器和 Jquery 来完成此任务 我们选择 Googl
  • Thymeleaf:可点击的行

    我想在 html thymeleaf 中生成可点击的表格行 但我有以下问题 AFAIK 它无法用链接 a 标签 包装 tr 元素 因为表只能 直接包含 tr 子标签 所以我必须包装每个 td tag 的内容 但这些值是由 thymeleaf
  • 单击 Windows 窗体中 CefSharp 浏览器中的按钮

    我正在尝试单击网页 kahoot it 上的按钮 并且我已经知道我可能需要使用 Javascript 来实现这一点 只要它保留 1 行 JavaScript 因为这很容易在WinForms 我没有太多关于按钮的信息 仅有的
  • 使用 htaccess 阻止特定目录的所有机器人/爬虫/蜘蛛

    我正在尝试阻止特殊目录的所有机器人 爬虫 蜘蛛 我怎样才能做到这一点htaccess 我搜索了一下 找到了基于用户代理阻塞的解决方案 RewriteCond HTTP USER AGENT googlebot 现在我需要更多的用户代理 对于
  • 从 Rails 表单获取数组

    我需要设计一个表格account资源 在这种形式下 我需要收集一些 id 集作为数组params属性中的哈希值称为relationships 所以最后的params account POST 请求的哈希值应类似于 name gt somen
  • 嵌套垂直边距折叠如何工作?

    我很难理解嵌套元素中垂直边距折叠的概念 我来了一篇文章http www howtocreate co uk tutorials css margincollapsing解释它是如何工作的 但是我对其解释感到困惑 所以在它的例子中它引用了以下
  • Rails:使用多个条件连接

    我有一个简单的模型 例如 class Interest lt ActiveRecord Base has and belongs to many user profiles end class UserProfile lt ActiveRe
  • 类中 static const ODR

    我有点困惑statica 的类内初始化const成员 例如 在下面的代码中 include
  • 将 jQuery UI Accordion 放入 jQuery UI 对话框中

    通过为选项卡创建适当的标记 我已经能够将 jQuery UI 选项卡小部件放置在 jQuery UI 对话框中 但对手风琴进行同样的操作并不起作用 单击手风琴部分的锚点会导致对话框关闭 有没有一种简单的方法可以实现这一点 对我来说效果很好
  • 查找某个项目是否在 JavaScript 数组中的最佳方法? [复制]

    这个问题在这里已经有答案了 查找对象是否在数组中的最佳方法是什么 这是我所知道的最好的方法 function include arr obj for var i 0 i lt arr length i if arr i obj return