5 回答
TA贡献1906条经验 获得超10个赞
ECMAScript 7介绍Array.prototype.includes
。
它可以像这样使用:
[1, 2, 3].includes(2); // true[1, 2, 3].includes(4); // false
它还接受可选的第二个参数fromIndex
:
[1, 2, 3].includes(3, 3); // false[1, 2, 3].includes(3, -1); // true
不像indexOf
,它采用严格相等比较,includes
比较了使用SameValueZero平等算法。这意味着您可以检测数组是否包含NaN
:
[1, 2, NaN].includes(NaN); // true
也不像indexOf
,includes
不跳过缺失的索引:
new Array(5).includes(undefined); // true
目前它仍然是草稿,但可以填充以使其适用于所有浏览器。
TA贡献1880条经验 获得超4个赞
目前的浏览器都有Array#includes
,这不正是那个,得到广泛支持,并具有填充工具旧版本浏览器。
> ['joe', 'jane', 'mary'].includes('jane');true
您也可以使用Array#indexOf
,这不是直接的,但不要求Polyfills用于过时的浏览器。
jQuery提供$.inArray
,功能相当于Array#indexOf
。
underscore.js,一个JavaScript实用程序库,提供_.contains(list, value)
别名_.include(list, value)
,如果传递了JavaScript数组,它们都在内部使用indexOf。
其他一些框架提供了类似的方法:
MooTools的:
array.indexOf(value)
MochiKit:
findValue(array, value)
MS Ajax:
array.indexOf(value)
Lodash :( 先前
_.includes(array, value, [from])
是_.contains
4.0.0)ECMAScript 2016:
array.includes(value)
请注意,某些框架将此实现为函数,而其他框架则将该函数添加到数组原型中。
TA贡献1777条经验 获得超3个赞
indexOf
也许,但它是“ECMA-262标准的JavaScript扩展;因此它可能不会出现在标准的其他实现中。”
例:
[1, 2, 3].indexOf(1) => 0["foo", "bar", "baz"].indexOf("bar") => 1[1, 2, 3].indexOf(4) => -1
AFAICS 微软并没有提供某种替代的这一点,但你可以到(不支持和其他浏览器Internet Explorer中的阵列加入类似的功能indexOf
),如果你想作为一个快速谷歌搜索发现(例如,这一个)。
添加回答
举报