es6 数组如何转为 map
时间: 2023-08-10 10:05:27 浏览: 58
可以使用数组的 `reduce` 方法将数组转换为 map。例如,假设有一个数组 `arr`,其中每个元素都是一个对象,每个对象都有一个 `id` 属性和一个 `value` 属性,我们可以将其转换为一个以 `id` 为 key,`value` 为 value 的 map,代码示例如下:
```
const arr = [
{ id: 1, value: 'foo' },
{ id: 2, value: 'bar' },
{ id: 3, value: 'baz' },
];
const map = arr.reduce((acc, cur) => {
acc.set(cur.id, cur.value);
return acc;
}, new Map());
console.log(map); // Map { 1 => 'foo', 2 => 'bar', 3 => 'baz' }
```
在上面的代码中,`reduce` 方法的第一个参数是一个回调函数,它接受两个参数 `acc` 和 `cur`,分别代表累加器和当前元素。回调函数将当前元素的 `id` 作为 key,`value` 作为 value 存入累加器 `acc`(一个新创建的 Map 对象),并最终返回累加器 `acc`。最终得到的 `map` 就是转换后的结果。
相关问题
es6数组去重
ES6数组去重有很多种方法,其中比较简单的方法是使用Set数据结构,因为Set数据结构中的元素都是唯一的。可以将数组转换为Set,然后再将Set转换回数组即可实现去重。示例代码如下:
```javascript
let arr = [1, 2, 2, 3, 3, 4, 5, 5];
let uniqueArr = Array.from(new Set(arr));
console.log(uniqueArr); // [1, 2, 3, 4, 5]
```
另外,也可以使用ES6中的Map数据结构来实现数组去重。示例代码如下:
```javascript
let arr = [1, 2, 2, 3, 3, 4, 5, 5];
let map = new Map();
let uniqueArr = [];
for (let i = 0; i < arr.length; i++) {
if (!map.has(arr[i])) {
map.set(arr[i], true);
uniqueArr.push(arr[i]);
}
}
console.log(uniqueArr); // [1, 2, 3, 4, 5]
```
这种方法的原理是利用Map数据结构中的键值对都是唯一的特性,将数组中的元素作为键存储在Map中,去重后再将键转换为数组即可。
es6 数组对象遍历方法
ES6新增了几种遍历数组对象的方法,包括for...of循环、数组的forEach()方法、数组的map()方法、数组的filter()方法、数组的some()方法和数组的every()方法。其中,for...of循环是最简洁直接的方法,可以遍历数组、对象、Set、Map等可迭代对象。而数组的forEach()方法、map()方法、filter()方法、some()方法和every()方法则可以对数组进行遍历、修改、筛选、判断等操作,并返回一个新的数组或布尔值。这些方法的使用可以大大简化代码,提高开发效率。