在 ES10 中,Javascript 新增了两个静态方法:Array.from()
和 Object.fromEntries()
。这两个方法对于前端开发来说,非常有用,可以帮助我们更加简便地处理数组和对象。接下来,我会为大家详细介绍这两个方法的使用和学习指导。
Array.from()
Array.from()
可以将一个可迭代对象或类数组对象转化为一个真正的数组。可迭代对象包括 Set 和 Map,类数组对象例如 DOM NodeList 对象等。
下面是 Array.from()
的语法:
Array.from(iterable, mapFn, thisArg)
iterable
: 可迭代对象或类数组对象mapFn
(可选): 一个函数,用于映射每个元素thisArg
(可选): mapFn 中 this 的上下文
那么 Array.from()
的应用场景是什么呢?假设我们有一个 DOM NodeList 对象,我们想遍历它并在其中每个元素后面添加一个空格,最后将结果放在一个新数组中。使用 Array.from()
可以让这个过程变得更加简单:
const list = document.querySelectorAll('li'); const arr = Array.from(list, (li) => li.textContent + ' '); // ['第一个li ', '第二个li ', '第三个li ']
Object.fromEntries()
而 Object.fromEntries()
则是将一个给定的键值对列表转化为一个对象。
下面是 Object.fromEntries()
的语法:
Object.fromEntries(iterable)
iterable
: 一个可迭代的键值对序列,每个条目格式为[key, value]
假设我们有一个很长的数组,我们想要它被转化为对象,通过 Object.fromEntries()
,我们可以快速完成这个操作:
const arr = [['name', 'Tom'], ['age', 18], ['gender', 'male']]; const obj = Object.fromEntries(arr); // { name: 'Tom', age: 18, gender: 'male' }
同时,当我们需要将一个对象转化为另一个对象时,也可以使用 Object.fromEntries()
:
const obj1 = { name: 'Tom', age: 18, gender: 'male' }; const entries = Object.entries(obj1); const obj2 = Object.fromEntries(entries.map(([key, val]) => [key, val.toUpperCase()])); // { name: 'TOM', age: '18', gender: 'MALE' }
总结
Array.from()
的作用是将可迭代对象或类数组对象转化为数组,其语法为 Array.from(iterable, mapFn, thisArg)
。
Object.fromEntries()
的作用是将键值对列表转化为对象,其语法为 Object.fromEntries(iterable)
。
这两个方法能够改善代码的简洁性和可读性,是每个前端开发人员必须掌握的知识点。在平时的学习和工作中,我们还应该多多尝试其用法,并将其运用到实际项目中。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64aa776a48841e989469a979