开发者社区> 问答> 正文

如何检查数组是否在JavaScript中包含值?

已解决

找出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。

展开
收起
保持可爱mmm 2020-01-08 11:23:34 510 0
1 条回答
写回答
取消 提交回答
  • 采纳回答

    目前的浏览器都有Array#includes,这不正是那个,得到广泛支持,并具有填充工具旧版本浏览器。

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

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

    jQuery提供的$.inArray功能在功能上等效于Array#indexOf。

    underscore.js是一个JavaScript实用工具库,提供_.contains(list, value),alias _.include(list, value),如果传递了JavaScript数组,则两者都在内部使用indexOf。

    其他一些框架提供了类似的方法:

    Dojo工具包: dojo.indexOf(array, value, [fromIndex, findLast])
    原型: array.indexOf(value)
    MooTools: array.indexOf(value)
    MochiKit: findValue(array, value)
    MS Ajax: array.indexOf(value)
    分机: Ext.Array.contains(array, value)
    Lodash: _.includes(array, value, [from])(是_.contains现有4.0.0)
    Ramda: R.includes(value, array)
    ECMAScript 2016: array.includes(value)
    

    注意,有些框架将此功能实现为函数,而其他框架则将该函数添加到数组原型中。

    问题来源于stack overflow

    2020-01-08 11:24:02
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
JavaScript面向对象的程序设计 立即下载
Delivering Javascript to World 立即下载
编程语言如何演化-以JS的private为例 立即下载