Object.entries(obj) & Object.fromEntries(iterable)
Object.entries() 和 Object.fromEntries() 是互逆的操作。
Object.entries(obj)
entries: /ˈen.tri/ 项目,条目,(一则)记录
返回值:object 的可枚举属性的键值对组成的数组。返回的数组的排序,和 for...in 遍历该对象时返回的顺序一致。
Warning:
for...in还会遍历原型链中的属性。
const object1 = {
a: "somestring",
b: 42,
};
let array = Object.entries(object1);
console.log(array); // [[a, 'somestring'], [b, 42]]
for (const [key, value] of Object.entries(object1)) {
console.log(`${key}: ${value}`);
// a: somestring
// b: 42
}
new Map() 接受一个可迭代的 entries ,所以借助 Object.entries() 就可以轻松地将 Object 转换成 Map。
Object.fromEntries(iterable)
该方法把键值对列表转换成对象。
参数 iterable:类似 Array Map 或者其他实现了 可迭代协议 的可迭代对象。
返回值:由参数提供对应属性的新对象。
常用用法
-
可以将
Map&Array转换成Objectconst arr = [
["0", "a"],
["1", "b"],
["2", "c"],
];
const obj = Object.fromEntries(arr);
console.log(obj); // { 0: "a", 1: "b", 2: "c" } -
对象转换
const object1 = { a: 1, b: 2, c: 3 };
const object2 = Object.fromEntries(
Object.entries(object1).map(([key, val]) => [key, val * 2])
);
console.log(object2);
// { a: 2, b: 4, c: 6 }