Array.prototype.includes
本章描述了由 Domenic Denicola 和 Rick Waldron 提出的 ECMAScript 2016 特性 “Array.prototype.includes
”。
> ['a', 'b', 'c'].includes('a')
true
> ['a', 'b', 'c'].includes('d')
false
includes
数组方法 includes
具有以下签名:
Array
.
prototype
.
includes
(
value
:
any
)
:
boolean
如果 value
是其接收器 (this
) 的元素,则返回 true
,否则返回 false
。
> ['a', 'b', 'c'].includes('a')
true
> ['a', 'b', 'c'].includes('d')
false
includes
与 indexOf
类似——以下两个表达式基本等效:
arr
.
includes
(
x
)
arr
.
indexOf
(
x
)
>=
0
主要区别在于 includes()
可以找到 NaN
,而 indexOf()
不能。
> [NaN].includes(NaN)
true
> [NaN].indexOf(NaN)
-1
includes
不区分 +0
和 -0
(这几乎是 JavaScript 的工作方式)。
> [-0].includes(+0)
true
类型化数组也将具有方法 includes()
。
let
tarr
=
Uint8Array
.
of
(
12
,
5
,
3
);
console
.
log
(
tarr
.
includes
(
5
));
// true
includes
而不是 contains
?Array.prototype
中)。includes
而不是 has
?has
用于键 (Map.prototype.has
),includes
用于元素 (String.prototype.includes
)。Set 的元素可以被视为键和值,这就是为什么存在 Set.prototype.has
(而没有 includes
)的原因。String.prototype.includes
处理字符串,而不是字符。这与 Array.prototype.includes
不一致吗?includes
的工作方式与字符串 includes
完全相同,则它将接受数组,而不是单个元素。但这两个 includes
都遵循 indexOf
的示例;字符被视为特殊情况,任意长度的字符串被视为一般情况。Array.prototype.includes
(Domenic Denicola, Rick Waldron)