随着前端技术的不断进步,ES10(ECMAScript 2019)作为最新一代的 JavaScript 语言标准,引入了不少令人惊喜的新特性。在本文中,我们将着重介绍部分 Array 方法升级和 Object 拓展,并附带详细的示例代码。
Array.flat()
Array.flat() 方法可以将多维数组转换为一维数组,同时也能够在这个过程中排除空数组,实际上就是递归地“摊平”嵌套数组。
const arr = [1, [2, [3, [4], 5]]]; console.log(arr.flat(Infinity)); // [1, 2, 3, 4, 5]
Array.flatMap()
Array.flatMap() 方法是 Array.map() 和 Array.flat() 的组合,它在映射后还可以对结果进行拍平操作,大大简化了一些复杂的数组操作。
const arr = [1, 2, 3, 4, 5]; console.log(arr.flatMap(x => [x * 2])); // [2, 4, 6, 8, 10]
Array.sort()
Array.sort() 方法已经成为了 JavaScript 数组排序的必备方法,然而在 ES10 中,该方法进行了优化,现在它可以直接按照数字大小来进行升序排列,而不需要再写回调函数了。
const arr = [3, 1, 4, 2, 5]; arr.sort((a, b) => a - b); console.log(arr); // [1, 2, 3, 4, 5]
Array.from()
Array.from() 方法中现在支持了对象作为第一个参数,不再需要传入类数组对象。
const obj = { length: 5, 0: 'a', 1: 'b', 2: 'c', 3: 'd', 4: 'e' }; console.log(Array.from(obj)); // ['a', 'b', 'c', 'd', 'e']
我们可以利用该方法来兼容一些不支持的浏览器和旧版本的 JavaScript 环境。
Object.fromEntries()
Object.fromEntries() 方法可以将键值对数组转换为对象。这个方法实际上实现了 Object.entries() 的逆操作。
const arr = [['a', 1], ['b', 2], ['c', 3]]; console.log(Object.fromEntries(arr)); // {a: 1, b: 2, c: 3}
Object.entries()
Object.entries() 方法会返回一个包含所有对象可枚举属性及其值的键值对数组。
const obj = {a: 1, b: 2, c: 3}; console.log(Object.entries(obj)); // [['a',1],['b',2],['c',3]]
该方法可以方便地将对象转换成数组,然后再进行进一步的处理。
Reflect.ownKeys()
Reflect.ownKeys() 方法可以获取对象上的所有属性,包括非枚举属性和 Symbol 类型属性。
const obj = {a: 1, [Symbol('b')]: 2}; console.log(Reflect.ownKeys(obj)); // ['a', Symbol(b)]
该方法可以避免很多常见的错误,例如误删 Symbol 类型属性、错误地遍历非枚举类型属性等。
总结
ES10 带来了很多有用的新特性,我们在日常工作中可以使用这些方法来提高效率、优化代码。透彻理解这些新特性,可以让我们更好地使用现代的 JavaScript 进行开发。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64735097968c7c53b00c87aa