一、Map对象转换成数组指定形式
方法 1: 使用 Array.from
+ 映射函数
直接通过 Array.from
的第二个参数(映射函数)转换:
javascript
const map = new Map([['a', 123], ['b', 456]]);
const result = Array.from(map, ([key, value]) => ({
label: key,
value: value
}));
console.log(result);
// 输出: [{ label: 'a', value: 123 }, { label: 'b', value: 456 }]
方法 2: 展开运算符 + map
先将 Map
展开为数组,再调用 map
转换:
javascript
const map = new Map([['a', 123], ['b', 456]]);
const result = [...map].map(([key, value]) => ({
label: key,
value: value
}));
console.log(result);
// 输出: [{ label: 'a', value: 123 }, { label: 'b', value: 456 }]
方法 3: for...of
循环遍历
通过遍历 Map
手动构建数组:
javascript
const map = new Map([['a', 123], ['b', 456]]);
const result = [];
for (const [key, value] of map) {
result.push({ label: key, value });
}
console.log(result);
// 输出: [{ label: 'a', value: 123 }, { label: 'b', value: 456 }]
方法 4: 使用 reduce
函数
通过 Array.from
或展开运算符配合 reduce
:
javascript
const map = new Map([['a', 123], ['b', 456]]);
const result = [...map].reduce((arr, [key, value]) => {
arr.push({ label: key, value });
return arr;
}, []);
console.log(result);
// 输出: [{ label: 'a', value: 123 }, { label: 'b', value: 456 }]
方法 5: 极简箭头函数写法
结合展开运算符和隐式返回:
javascript
const map = new Map([['a', 123], ['b', 456]]);
const result = [...map].map(([k, v]) => ({ label: k, value: v }));
console.log(result);
// 输出: [{ label: 'a', value: 123 }, { label: 'b', value: 456 }]
二、数组指定形式转换成Map对象
方法 1: 使用 Array.map()
和 Map
构造函数
直接将数组映射为 [key, value]
格式,传入 Map
构造函数:
javascript
const arr = [{ label: 'a', value: 123 }, { label: 'b', value: 456 }];
const map = new Map(arr.map(item => [item.label, item.value]));
// 验证
console.log(map.get('a')); // 123
console.log(map.get('b')); // 456
方法 2: 使用 reduce
遍历构建
通过 reduce
逐项插入到 Map
中:
javascript
const arr = [{ label: 'a', value: 123 }, { label: 'b', value: 456 }];
const map = arr.reduce((acc, item) => {
acc.set(item.label, item.value);
return acc;
}, new Map());
console.log(map);
// 输出:new Map([["a",123],["b",456]])
方法 3: for...of
循环遍历
显式遍历数组并插入键值对:
javascript
const arr = [{ label: 'a', value: 123 }, { label: 'b', value: 456 }];
const map = new Map();
for (const item of arr) {
map.set(item.label, item.value);
}
console.log(map);
// 输出:new Map([["a",123],["b",456]])
方法 4: 使用 forEach
遍历
利用数组的 forEach
方法:
javascript
const arr = [{ label: 'a', value: 123 }, { label: 'b', value: 456 }];
const map = new Map();
arr.forEach(item => map.set(item.label, item.value));
console.log(map);
// 输出:new Map([["a",123],["b",456]])
方法 5: 动态生成键值对(极简箭头函数)
结合解构和隐式返回:
javascript
const arr = [{ label: 'a', value: 123 }, { label: 'b', value: 456 }];
const map = new Map(arr.map(({ label, value }) => [label, value]));
console.log(map);
// 输出:new Map([["a",123],["b",456]])