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])是_.contains4.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) => -1AFAICS 微软并没有提供某种替代的这一点,但你可以到(不支持和其他浏览器Internet Explorer中的阵列加入类似的功能indexOf),如果你想作为一个快速谷歌搜索发现(例如,这一个)。
添加回答
举报
