ECMAScript 2017 是 JavaScript 最新的标准,也称为 ES8。在这个新标准中,对于数组的操作进行了一些追加和改进,同时还增加了三个逻辑操作符:与、或、非。本文将详细介绍这些新特性,并提供示例代码和指导意义。
Array.prototype.includes
在 ES6 中,JavaScript 引入了 Array.prototype.indexOf
方法来查找数组中的元素。但是,indexOf
方法有一个缺点,即无法判断数组中是否包含 NaN
元素,因为 NaN === NaN
的结果是 false
。在 ES7 中,JavaScript 引入了 Array.prototype.includes
方法来解决这个问题。
Array.prototype.includes
方法接收一个参数,用于指定要查找的元素。如果数组中包含该元素,则返回 true
;否则返回 false
。下面是一个示例:
const arr = [1, 2, 3, NaN]; console.log(arr.includes(1)); // true console.log(arr.includes(NaN)); // true console.log(arr.includes(4)); // false
Array.prototype.flat 和 Array.prototype.flatMap
在 ES6 中,JavaScript 引入了 Array.prototype.flat
方法来将嵌套的数组展开为一维数组。在 ES7 中,JavaScript 引入了 Array.prototype.flatMap
方法,它与 Array.prototype.map
方法类似,但是可以将嵌套的数组展开为一维数组。
Array.prototype.flat
方法接收一个参数,用于指定要展开的层数。如果不指定参数,则默认展开一层。下面是一个示例:
const arr = [1, [2, 3], [4, [5, 6]]]; console.log(arr.flat()); // [1, 2, 3, 4, [5, 6]] console.log(arr.flat(2)); // [1, 2, 3, 4, 5, 6]
Array.prototype.flatMap
方法接收一个参数,用于指定对每个元素执行的映射函数。这个映射函数可以返回一个数组,这个数组会被展开为一维数组。下面是一个示例:
const arr = [1, 2, 3]; console.log(arr.flatMap(x => [x, x * 2])); // [1, 2, 2, 4, 3, 6]
逻辑操作符
在 ES7 中,JavaScript 引入了三个逻辑操作符:与、或、非。这些操作符与它们在其他编程语言中的行为类似,但是在 JavaScript 中有一些特殊的规则。
与操作符(&&)
与操作符可以用于连接两个表达式。如果第一个表达式的值为真,则返回第二个表达式的值;否则返回第一个表达式的值。如果第一个表达式的值为假,则不会执行第二个表达式。
下面是一个示例:
const x = 1; const y = 2; const z = 3; console.log(x < y && y < z); // true console.log(x > y && y < z); // false
或操作符(||)
或操作符可以用于连接两个表达式。如果第一个表达式的值为真,则返回第一个表达式的值;否则返回第二个表达式的值。如果第一个表达式的值为假,则会执行第二个表达式。
下面是一个示例:
const x = null; const y = 2; console.log(x || y); // 2
非操作符(!)
非操作符可以将一个表达式的值转换为布尔值,并返回相反的值。如果表达式的值为假,则返回 true
;否则返回 false
。
下面是一个示例:
const x = null; console.log(!x); // true
总结
在 ECMAScript 2017 中,JavaScript 引入了一些新特性,包括 Array.prototype.includes
、Array.prototype.flat
、Array.prototype.flatMap
和逻辑操作符。这些特性可以帮助我们更方便地操作数组和进行逻辑运算。在编写 JavaScript 代码时,我们应该熟练掌握这些特性,并适当地运用它们来提高代码的可读性和效率。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/653c973a7d4982a6eb6ac7fb