引言
ES12 中增加了新的方法 Object.fromEntries(),这个方法和 Object.entries() 非常相似但又有不同,本文将详细介绍 Object.fromEntries() 和 Object.entries() 的区别及应用。
Object.entries()
Object.entries() 是将一个对象的键值对转换成一个二维数组。例如:
const obj = {x: 1, y: 2}; const entries = Object.entries(obj); console.log(entries); // Output: [["x", 1], ["y", 2]]
Object.fromEntries()
Object.fromEntries() 是将一个二维数组转换成一个对象。例如:
const entries = [["x", 1], ["y", 2]]; const obj = Object.fromEntries(entries); console.log(obj); // Output: {x: 1, y: 2}
区别
Object.fromEntries() 和 Object.entries() 的区别就是 Object.fromEntries() 将二维数组转化成对象,而 Object.entries() 将对象转化成二维数组。
应用
将 map 转为对象
使用 Object.fromEntries() 可以将 map 转化成对象,例如:
const map = new Map([["x", 1], ["y", 2]]); const obj = Object.fromEntries(map); console.log(obj); // Output: {x: 1, y: 2}
将对象序列化为 URL 查询参数
使用 Object.entries() 和 URLSearchParams 类可以将对象序列化为 URL 查询参数,例如:
const obj = {x: 1, y: 2}; const params = new URLSearchParams(Object.entries(obj)); console.log(params.toString()); // Output: "x=1&y=2"
实现 Map 的过滤
使用 Object.entries() 和 Array.prototype.filter() 可以实现 map 的过滤,例如:
-- -------------------- ---- ------- ----- --- - --- ---------- --- ----- --- ----- ----- ----- -------- - ---------------------------------- --------------------------------------- ------- -- ----- - -- --- ---------------------- -- ------- ------ --- ----- --- ----- ----------- - --- -------------- ------------------------- -- ------- --- - --- -- -- --- -- - -
结论
Object.fromEntries() 和 Object.entries() 在某些特定场景中非常有用,例如将 map 转化为对象、将对象序列化为 URL 查询参数和实现 Map 的过滤。但请注意,在上述场景中使用这两个方法时需要小心,避免出现意想不到的错误。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6704d047d91dce0dc850515f