ES6新增数据类型 Map( ) map() 应用

Map 是 ES6 中新增的一种数据类型,它是一种可以将键值对进行存储的集合,其中键和值都可以是任何类型的数据(包括对象、函数、字符串等等)。 与普通的对象不同的是,Map 会保留键值对添加的顺序,并且通过 Map 提供的一些方法,可以非常方便地进行键值对的添加、删除、遍历等操作。

Map是ES6新增的一种数据类型,它是一种可以存储键值对的集合,其中键和值都可以是任何类型的数据(包括对象和函数),而且可以使用任何类型的值作为键。

在使用Map时,需要使用new关键字来创建一个新的Map对象,如下所示:

const myMap = new Map();

Map对象有一些常用的方法,下面介绍一些常用的方法及其应用。

set(key, value)方法:设置Map对象中键值对的值。

const myMap = new Map();
myMap.set('name', 'John');
myMap.set('age', 30);

get(key)方法:根据键获取Map对象中对应的值。

const myMap = new Map();
myMap.set('name', 'John');
myMap.set('age', 30);

console.log(myMap.get('name')); // 输出 John
console.log(myMap.get('age')); // 输出 30

has(key)方法:判断Map对象中是否存在指定的键。

const myMap = new Map();
myMap.set('name', 'John');
myMap.set('age', 30);
console.log(myMap.has('name')); // 输出 true
console.log(myMap.has('gender')); // 输出 false

size属性:获取Map对象中键值对的个数。

const myMap = new Map();
myMap.set('name', 'John');
myMap.set('age', 30);
console.log(myMap.size); // 输出 2

delete(key)方法:根据键删除Map对象中的键值对。

const myMap = new Map();
myMap.set('name', 'John');
myMap.set('age', 30);
myMap.delete('name');
console.log(myMap); // 输出 Map(1) { "age" => 30 }

clear()方法:清空Map对象中的所有键值对。

const myMap = new Map();
myMap.set('name', 'John');
myMap.set('age', 30);
myMap.clear();
console.log(myMap); // 输出 Map(0) {}

map.keys()方法:返回一个包含Map对象中的所有键的可迭代对象。

let map = new Map();
map.set('key1', 'value1');
map.set('key2', 'value2');
let keysIterator = map.keys();
for(let key of keysIterator) {
  console.log(key); // Output: 'key1', 'key2'
}

 map.values()方法:返回一个包含Map对象中的所有值的可迭代对象。

let map = new Map();
map.set('key1', 'value1');
map.set('key2', 'value2');
let valuesIterator = map.values();
for(let value of valuesIterator) {
  console.log(value); // Output: 'value1', 'value2'
}

 map.entries()方法:返回一个包含Map对象中的所有键/值对的可迭代对象。

const myMap = new Map();
myMap.set('firstName', 'John');
myMap.set('lastName', 'Doe');
const entries = myMap.entries();
console.log(entries.next().value); // Output: ["firstName", "John"]
console.log(entries.next().value); // Output: ["lastName", "Doe"]

Map是一种非常灵活的数据类型,在实际开发过程中可以非常方便的用来存储和查找数据,特别是在需要存储大量数据或者需要频繁进行搜索的情况下更是如此。

map应用

map------> 数组

        //map ----> 对象
        let m = new Map();
        m.set('name', '李四');
        m.set('attr', "打拳");
        m.set('age', 20)
        let obj = {}
        m.forEach((v, k) => {
            console.log(k);
            obj[k] = v;
        })
        console.log(obj);

 数组------>map

// 对象---->map
let m = new Map()
for (let key in obj) {
   m.set(key, obj[key]);
}
console.log(m);

映射转换

ES6 的 Map 可以将一个数组或对象的值映射成一个新值,可以使用 Map.prototype.get() 方法获取一个映射的值,使用 Map.prototype.set() 方法设置一个映射的值,使用 Map.prototype.has() 方法检查映射中是否存在某个键值对,使用 Map.prototype.delete() 方法删除一个键值对。

示例:

const oldArr = [1, 2, 3, 4, 5];
const newArr = oldArr.map(item => item * 2);
console.log(newArr); // [2, 4, 6, 8, 10]

集合去重

ES6 的 Map 还可以用来实现数组的去重,将数组中的值作为键,值可以随便设置,然后使用 Map.prototype.values() 方法获取 Map 中的值并返回一个迭代器对象,用 Array.from() 方法将其转换为一个数组,即可得到去重后的数组。

示例:

const arr = [1, 2, 3, 4, 5, 1, 2, 3, 4, 5];
const set = new Map();
arr.forEach(item => set.set(item, true));
const newArr = Array.from(set.keys());
console.log(newArr); // [1, 2, 3, 4, 5]

对象操作

ES6 的 Map 还可以作为对象的替代品,使用 Map 的好处在于可以使用任何类型的值作为键,而对象只能使用字符串或 Symbol 类型的值作为键。

示例:

const obj = { name: 'Tom', age: 18, gender: 'male' };
const map = new Map(Object.entries(obj));
console.log(map.get('name')); // 'Tom'
console.log(map.get('age')); // 18
console.log(map.get('gender')); // 'male'

回调函数

ES6 的 Map 还可以用来处理回调函数,将回调函数作为参数传入 Map.prototype.forEach() 方法中,在迭代过程中调用回调函数进行处理。

示例:

const map = new Map([
  ['apple', 2],
  ['banana', 3],
  ['pear', 4]
]);
map.forEach((value, key) => {
  console.log(`${key} price: ${value} dollars`);
});
// apple price: 2 dollars
// banana price: 3 dollars
// pear price: 4 dollars

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
回答: ES6中的Set和Map是两种新增的集合类型。Set是一种无重复值的集合,可以通过new Set()来创建。它具有add方法用于向集合中添加元素,has方法用于判断集合中是否存在某个元素,clear方法用于清空集合。Set也可以用于数组去重,通过new Set(\[...\])的方式将数组转换为Set,利用Set的特性去除重复值。\[1\] Map是一种键值对的集合,可以通过new Map()来创建。它具有set方法用于向集合中添加键值对,get方法用于获取指定键名对应的值,has方法用于判断集合中是否存在某个键名,clear方法用于清空集合。Map的键名可以是任意数据类型,包括引用值,但需要注意的是,引用值作为键名时,需要使用相同的引用地址才能获取到对应的值。\[2\] Set和Map都可以使用for...of循环或forEach方法进行遍历。在Set中,forEach的第二个参数是集合的元素,因为Set中不存在下标。而在Map中,forEach的第一个参数是键值对的值,第二个参数是键值对的键名。\[3\] 总结来说,Set和MapES6新增的集合类型,Set用于存储无重复值的集合,Map用于存储键值对的集合。它们提供了一些方法来操作集合,如添加、获取、判断是否存在等。在使用时需要注意它们的特性和方法的使用方式。 #### 引用[.reference_title] - *1* *2* [ES6中的Map和Set详解](https://blog.csdn.net/m0_45093055/article/details/126430467)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [ES6中的set与map](https://blog.csdn.net/weixin_44247866/article/details/127561391)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值