• 欢迎访问web前端中文站,JavaScript,CSS3,HTML5,web前端demo
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏web前端中文站吧

ES2016 新特性:Array.prototype.includes

ES2015(ES6) web前端中文站 2年前 (2017-08-02) 765次浏览 已收录 0个评论

本章介绍由 Domenic Denicola 和 Rick Waldron 提议的 ECMAScript 2016 新特性 Array.prototype.includes

更多精彩内容请看 web 前端中文站
http://www.lisa33xiaoq.net 可按 Ctrl + D 进行收藏

概述

 > ['a', 'b', 'c'].includes('a') true > ['a', 'b', 'c'].includes('d') false 

数组方法 includes

数组方法 includes 有以下签名:

 Array.prototype.includes(value : any) : boolean 

如果某个数组中包含 value 这个元素,则返回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 

TypedArray 同样有 includes() 方法:

 let tarr = Uint8Array.of(12, 5, 3); console.log(tarr.includes(5)); // true 

常见问题

  • 为什么这个方法叫做 includes 而不是 contains ?
    后者(即:contains)是最初的选择,但是这将破坏了网上现有的代码( 例如:MooTools 将此方法添加到了 Array.prototype 中)。
  • 为什么这个方法叫做 includes 而不是 has ?
    has 已被用作关键字了(Map.prototype.has),
    includes 用于元素(String.prototype.includes)。集合的元素既可以被看作是键和也可以被看作值,这就是为什么有一个 Set.prototype.has(而不是 includes )。
  • ES6 方法 String.prototype.includes 适用于字符串,而不是字符。那么对于 Array.prototype.includes 方法而言,是不是存在不一致问题?
    如果数组的 includes 方法和字符串的 includes 方法工作机制一样,它应该接受数组,而不是单个元素。但是两个 includes 方法与 indexOf 方法的例子保持一致;作为一般情况,字符被视为特殊情况和任意长度的字符串。

扩展阅读

Array.prototype.includes (Domenic Denicola, Rick Waldron)

原文链接:http://exploringjs.com/es2016-es2017/ch_array-prototype-includes.html

【注:本文源自网络文章资源,由站长整理发布】


web 前端中文站 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:ES2016 新特性:Array.prototype.includes
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址