在 JavaScript 开发中,我们经常需要将不同的数据结构进行转换,比如将一组数据转换为数组,或将对象转换为数组。在 ES12 中,新增了两个方法:Array.of 和 Object.fromEntries,可以更方便地进行数据转换。
Array.of
在 ES6 之前,我们需要使用 Array 构造函数来创建新的数组。但是 Array 构造函数在参数个数不同的情况下可能会产生和我们期望不同的结果。例如:
console.log(new Array(3)); // [ , , ] console.log(new Array("3")); // ["3"] console.log(new Array(1, 2, 3)); // [1, 2, 3]
以上代码中,第一个例子创建了一个包含三个空位的数组,第二个例子创建了一个包含一个字符串 "3" 的数组,第三个例子创建了一个包含三个数值的数组。可以看到,Array 构造函数的行为非常难以理解。
为了解决这个问题,ES6 引入了 Array.of 方法。Array.of 方法可以接收任意数量的参数,并将它们放入一个新的数组中。例如:
console.log(Array.of(3)); // [3] console.log(Array.of("3")); // ["3"] console.log(Array.of(1, 2, 3)); // [1, 2, 3]
可以看到,Array.of 方法的行为更加符合我们的期望。
Object.fromEntries
在开发中,我们有时需要将一个对象转换为另一个对象或数组。在 ES6 中,可以使用 Object.entries 方法将一个对象转换为一个键值对数组。例如:
const obj = { a: 1, b: 2, c: 3 }; const arr = Object.entries(obj); console.log(arr); // [["a", 1], ["b", 2], ["c", 3]]
如果想要将一个键值对数组转换为一个对象,我们可以使用 for...of 循环和解构赋值语法。例如:
const arr = [["a", 1], ["b", 2], ["c", 3]]; const obj = {}; for (const [key, value] of arr) { obj[key] = value; } console.log(obj); // {a: 1, b: 2, c: 3}
但是,这个过程比较繁琐,需要手动进行循环和赋值操作。在 ES12 中,新增了 Object.fromEntries 方法,可以更方便地将一个键值对数组转换为一个对象。例如:
const arr = [["a", 1], ["b", 2], ["c", 3]]; const obj = Object.fromEntries(arr); console.log(obj); // {a: 1, b: 2, c: 3}
可以看到,使用 Object.fromEntries 方法可以使转换过程更加简单。
总结
在 ES12 中,新增了 Array.of 和 Object.fromEntries 方法,可以更方便地进行数据转换。使用这些方法可以使代码更加简单易懂,提高开发效率。
示例代码:
-- -------------------- ---- ------- -- -------- ---- ------------------------- -- --- --------------------------- -- ----- ----------------------- -- ---- -- --- -- -- -- ------------------ ---- ----- --- - - -- -- -- -- -- - -- ----- --- - -------------------- ----------------- -- ------ --- ----- --- ----- --- ----- ---- - ------------------------ ------------------ -- --- -- -- -- -- --
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/648f002348841e9894d600e1