在 ES12 中,新增了一个 Object 的静态方法 Object.fromEntries()
,用于将键值对数组转换为对象。该方法在某些场景下可以方便地操作对象,本文将详细介绍其用法和应用场景。
用法示例
Object.fromEntries() 的基本使用方法如下:
Object.fromEntries(iterable)
其中 iterable
是键值对数组,比如:
const arr = [['key1', 'value1'], ['key2', 'value2']]; const obj = Object.fromEntries(arr); console.log(obj); // { key1: 'value1', key2: 'value2' }
上述代码将 [['key1', 'value1'], ['key2', 'value2']]
这个键值对数组转换为了一个对象 { key1: 'value1', key2: 'value2' }
。
应用场景
Object.fromEntries() 在实际开发中有很多应用场景,下面列举几个常用的:
1. Object 转为 Map
Object.fromEntries() 可以将 Object 转为 Map。比如我们有一个对象:
const obj = { key1: 'value1', key2: 'value2' };
可以使用 Object.entries() 方法将其转换为 Map 类型的数据结构:
const map = new Map(Object.entries(obj)); console.log(map instanceof Map); // true
2. Object 转为 FormData
使用 Object.fromEntries() 可以将 Object 转为 FormData 类型,如下所示:
const obj = { a: 1, b: 2 }; const formData = new FormData(); Object.entries(obj).forEach(([key, value]) => formData.append(key, value)); console.log(formData); // FormData { a: '1', b: '2' }
3. 通过 entries() 和 fromEntries() 过滤对象属性
Object.fromEntries() 可以用于快速过滤掉对象中某些属性,例如:
const obj = { a: 1, b: 2, c: 3 }; const entries = Object.entries(obj).filter(([key, value]) => key !== 'b'); const filteredObj = Object.fromEntries(entries); console.log(filteredObj); // { a: 1, c: 3 }
4. 优化对象
如果我们正在处理大量对象,可以使用 Object.fromEntries() 将它们转换为 Map 对象,这样可以更快地访问对象的属性。
const arr = [{ key1: 'value1' }, { key2: 'value2' }]; const map = new Map(arr.map(Object.entries).flat()); console.log(map.get('key1')); // value1
总结
Object.fromEntries() 在某些场景下可以方便地操作对象,将键值对数组转换为对象、Object 转为 Map、Object 转为 FormData、通过 entries() 和 fromEntries() 过滤对象属性等等。可以说,掌握 Object.fromEntries() 方法可以让你更好地操作对象,提高代码的效率,希望本文对初学者有所帮助!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6455099a968c7c53b08b6904