假设有一个数组,要以数组中的某个属性作为键,数组元素本身作为值来创建一个 Map。以下是一个示例:
// 假设有一个工具数组const list = [ { id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }, { id: 3, name: 'Charlie' }];// 利用 reduce 方法将数组转换成 Mapconst map = list.reduce((acc, item) => { acc.set(item.id, item); // 这里利用 id 作为键,工具本身作为值 return acc;}, new Map());console.log(map);// 输出: Map(3) { 1 => { id: 1, name: 'Alice' }, 2 => { id: 2, name: 'Bob' }, 3 => { id: 3, name: 'Charlie' } }
在这个例子中,reduce 方法接管两个参数:一个回调函数和一个初始值。回调函数本身接管两个参数:累加器(这里是 acc,初始化为一个新的 Map 工具)和当前元素(这里是 item)。在每次迭代中,利用 set 方法将数组元素的 id 作为键,元素本身作为值添加到 Map 中。
如果列表是大略的值而不是工具,可以按照类似的办法进行转换:
const numbers = [1, 2, 3, 4, 5];const numberMap = new Map(numbers.map(number => [number, number 2]));console.log(numberMap);// 输出: Map(5) { 1 => 2, 2 => 4, 3 => 6, 4 => 8, 5 => 10 }
在这个例子中,利用 map 方法创建一个键值对的数组,将这个数组作为参数通报给 Map 布局函数来创建 Map 工具。每个键值对中的键是原始数组中的元素,值是元素乘以2的结果。