ECMAScript 2017(ES8)是 JavaScript 的标准版本之一,它增加了一些非常实用和方便的功能。本文将向你介绍其中两个最常用的新方法:数组去重和迭代器。
数组去重
数组去重是一个很常见的问题。在以前的时候,我们需要使用 for 循环来实现。在 ES6 中,我们可以使用 Set 数据结构解决这个问题。在 ES8 中,我们有了更为简洁的方法:使用 Array.prototype.includes() 方法。
const arr = [1, 2, 2, 3, 3, 3]; const distinctArr = [...new Set(arr)]; console.log(distinctArr); // [1, 2, 3]
上述代码中,我们首先创建了一个包含重复元素的数组 arr,然后使用 Set 对象去重,并使用扩展运算符将 Set 对象转换成数组。
使用 includes() 方法的方式更为简单:
const arr = [1, 2, 2, 3, 3, 3]; const distinctArr = arr.filter((x, idx, self) => self.indexOf(x) === idx); console.log(distinctArr); // [1, 2, 3]
arr.filter() 方法返回一个新的数组,该数组由符合条件的元素组成。在此例中,我们利用 indexOf() 方法判断元素是否在此数组中已经存在。
迭代器
迭代器是一种方法,使我们可以访问集合中的每个元素。它是 Web 编程中的一个非常有用的工具,我们可以对数组、Map、Set 和 Iterator 等数据结构进行迭代。在 ES8 中,我们可以通过 Object.values() 和 Object.entries() 方法访问对象的键和值对。
const obj = { foo: 'bar', baz: 42 }; const objEntries = Object.entries(obj); console.log(objEntries); // [['foo', 'bar'], ['baz', 42]]
Object.entries() 方法返回一个数组,其中包含对象的键和值对。
要访问对象的值,我们可以将 Object.entries() 的结果传递给 Array.prototype.map() 方法:
const obj = { foo: 'bar', baz: 42 }; const objValues = Object.values(obj).map(x => x.toString()); console.log(objValues); // ['bar', '42']
上述代码中,我们首先使用 Object.values() 方法获取对象的所有值,然后使用 map() 方法将每个值转换为字符串。
迭代器在 ES8 中被扩展成更多的方式。除了 Object.values() 和 Object.entries() 方法之外,还有许多内置的对象可以使用。例如:TypedArray 对象(从数组中获取下一个字节),String 对象(迭代字符串中的每个字符)以及 NodeList 对象(对文档中的所有元素进行迭代)。
结论
本文介绍了 ECMAScript 2017(ES8)中的两个常用新功能:数组去重和迭代器。我们还提供了如何使用这些新功能的示例代码。这些新功能为 JavaScript 开发人员提供了更好的工具,使我们的代码更加简洁和高效。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/672ca183ddd3a70eb6d8e60e