猿问

如何检查数组是否包含JavaScript中的对象?

如何检查数组是否包含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


繁花不似锦
浏览 3153回答 5
5回答

隔江千里

ECMAScript 7介绍Array.prototype.includes。它可以像这样使用:[1,&nbsp;2,&nbsp;3].includes(2);&nbsp;//&nbsp;true[1,&nbsp;2,&nbsp;3].includes(4);&nbsp;//&nbsp;false它还接受可选的第二个参数fromIndex:[1,&nbsp;2,&nbsp;3].includes(3,&nbsp;3);&nbsp;//&nbsp;false[1,&nbsp;2,&nbsp;3].includes(3,&nbsp;-1);&nbsp;//&nbsp;true不像indexOf,它采用严格相等比较,includes比较了使用SameValueZero平等算法。这意味着您可以检测数组是否包含NaN:[1,&nbsp;2,&nbsp;NaN].includes(NaN);&nbsp;//&nbsp;true也不像indexOf,includes不跳过缺失的索引:new&nbsp;Array(5).includes(undefined);&nbsp;//&nbsp;true目前它仍然是草稿,但可以填充以使其适用于所有浏览器。

慕的地8271018

b是值,a是数组。它返回true或false:function(a,&nbsp;b)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;a.indexOf(b)&nbsp;!=&nbsp;-1}

慕村225694

目前的浏览器都有Array#includes,这不正是那个,得到广泛支持,并具有填充工具旧版本浏览器。>&nbsp;['joe',&nbsp;'jane',&nbsp;'mary'].includes('jane');true您也可以使用Array#indexOf,这不是直接的,但不要求Polyfills用于过时的浏览器。jQuery提供$.inArray,功能相当于Array#indexOf。underscore.js,一个JavaScript实用程序库,提供_.contains(list, value)别名_.include(list, value),如果传递了JavaScript数组,它们都在内部使用indexOf。其他一些框架提供了类似的方法:Dojo工具包:&nbsp;dojo.indexOf(array, value, [fromIndex, findLast])原型:&nbsp;array.indexOf(value)MooTools的:&nbsp;array.indexOf(value)MochiKit:&nbsp;findValue(array, value)MS Ajax:&nbsp;array.indexOf(value)分机:&nbsp;Ext.Array.contains(array, value)Lodash :(&nbsp;先前_.includes(array, value, [from])是_.contains4.0.0)ECMAScript 2016:&nbsp;array.includes(value)请注意,某些框架将此实现为函数,而其他框架则将该函数添加到数组原型中。

慕森王

indexOf&nbsp;也许,但它是“ECMA-262标准的JavaScript扩展;因此它可能不会出现在标准的其他实现中。”例:[1,&nbsp;2,&nbsp;3].indexOf(1)&nbsp;=>&nbsp;0["foo",&nbsp;"bar",&nbsp;"baz"].indexOf("bar")&nbsp;=>&nbsp;1[1,&nbsp;2,&nbsp;3].indexOf(4)&nbsp;=>&nbsp;-1AFAICS&nbsp;微软并没有提供某种替代的这一点,但你可以到(不支持和其他浏览器Internet Explorer中的阵列加入类似的功能indexOf),如果你想作为一个快速谷歌搜索发现(例如,这一个)。
随时随地看视频慕课网APP
我要回答