首页 > JavaScript > JavaScript 数组中查找项目的最佳方法?使用 .indexOf

JavaScript 数组中查找项目的最佳方法?使用 .indexOf

上一篇 下一篇

找出 JavaScript 数组是否包含值的最简洁有效的方法是什么?

这是我所知道的唯一方法:

function contains(a, obj) {
    for (var i = 0; i < a.length; i++) {
        if (a[i] === obj) {
            return true;
        }
    }
    return false;
}

有没有更好、更简洁的方法来实现这一点?

这与 Stack Overflow 问题非常密切相关 在 JavaScript 数组中查找项目的最佳方法?解决了使用 .indexOf

分割线

网友回答:

2019 年更新:此答案来自 2008 年(11 岁!),与现代 JS 使用无关。承诺的性能改进是基于当时浏览器中的基准测试。它可能与现代 JS 执行上下文无关。如果您需要一个简单的解决方案,请寻找其他答案。如果您需要最佳性能,请在相关执行环境中为自己进行基准测试。

正如其他人所说,通过数组进行迭代可能是最好的方法,但已经证明递减循环是在 JavaScript 中迭代的最快方法。因此,您可能需要按如下方式重写代码:while

function contains(a, obj) {
    var i = a.length;
    while (i--) {
       if (a[i] === obj) {
           return true;
       }
    }
    return false;
}

Of course, you may as well extend Array prototype:

Array.prototype.contains = function(obj) {
    var i = this.length;
    while (i--) {
        if (this[i] === obj) {
            return true;
        }
    }
    return false;
}

And now you can simply use the following:

alert([1, 2, 3].contains(2)); // => true
alert([1, 2, 3].contains('2')); // => false

分割线

网友回答:

现代浏览器有 ,它正是这样做的,并且除了IE之外,每个人都广泛支持:Array#includes

console.log(['joe', 'jane', 'mary'].includes('jane')); //true

您也可以使用 ,它不太直接,但对于过时的浏览器不需要 polyfill。Array#indexOf

console.log(['joe', 'jane', 'mary'].indexOf('jane') >= 0); //true

许多框架也提供类似的方法:

  • j查询:$.inArray(value, array, [fromIndex])
  • 下划线.js:(别名也为 和_.contains(array, value)_.include_.includes)
  • 道场工具包:dojo.indexOf(array, value, [fromIndex, findLast])
  • 原型:array.indexOf(value)
  • 嗓哞��array.indexOf(value)
  • 麻糬套件:findValue(array, value)
  • MS Ajax:array.indexOf(value)
  • 内线:Ext.Array.contains(array, value)
  • 洛达什:(低于 4.0.0)_.includes(array, value, [from])_.contains
  • 拉姆达:R.includes(value, array)

请注意,某些框架将其实现为函数,而其他框架则将函数添加到数组原型中。

分割线

网友回答:

indexOf也许吧,但它是“ECMA-262 标准的 JavaScript 扩展;因此,它可能不会出现在该标准的其他实现中。

例:

[1, 2, 3].indexOf(1) => 0
["foo", "bar", "baz"].indexOf("bar") => 1
[1, 2, 3].indexOf(4) => -1

AFAICS Microsoft不提供某种替代方案,但是如果您愿意,您可以为Internet Explorer(以及其他不支持的浏览器)中的数组添加类似的功能,正如快速Google搜索显示的那样(例如,这个)。indexOf

模板简介:该模板名称为【JavaScript 数组中查找项目的最佳方法?使用 .indexOf】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【JavaScript】栏目查找您需要的精美模板。

相关搜索
  • 下载密码 lanrenmb
  • 下载次数 273次
  • 使用软件 Sublime/Dreamweaver/HBuilder
  • 文件格式 编程语言
  • 文件大小 暂无信息
  • 上传时间 02-10
  • 作者 网友投稿
  • 肖像权 人物画像及字体仅供参考
栏目分类 更多 >
热门推荐 更多 >
响应式 自适应 html5 微信素材 微信图片 微信文章 企业网站 单页式简历模板 微信公众平台 微信模板
您可能会喜欢的其他模板