Map 对象,js

  • //// Map 对象 ,键值对,记得插入顺序,可以使用对象作键,没有默认值
new Map()   //创建新的 Map 对象。
let map = new Map([
  ["name", 12],
  ["age", 12],
]);
let map1 = new Map()
map1.set('name',12)
map1.set('age',12)
// 这两种定义等价,可以看为map是一种特殊格式的二维数组,lodash把这种格式叫做 pairs ,array相关有fromPairs(arr)方法,把这种数组转为对象
let arr = Array.from(map)
let obj = fromPairs(arr)
console.log(map,map1,arr,obj);
// Map(2) {"name" => 12, "age" => 12} Map(2) {"name" => 12, "age" => 12} (2) [Array(2), Array(2)] {name: 12, age: 12}
set()   //为 Map 对象中的键设置值。
get()   //获取 Map 对象中键的值。
let map = new Map([
  ["name", 12],
  ["age", 12],
]);
map.set('age',13)
console.log(map.get('age'))
// 13
entries()   //返回 Map 对象中键/值对的数组。
let map = new Map([
  ["name", 12],
  ["age", 12],
]);
map.set('age',13)
console.log(map.entries())
// MapIterator {"name" => 12, "age" => 13} 这里并不是标准意义的数组,有可迭代的标识
keys()  //返回 Map 对象中键的数组。
let map = new Map([
  ["name", 12],
  ["age", 12],
]);
let keys = map.keys()
console.log(keys,Array.from(keys))
// MapIterator {"name", "age"}
// MapIterator {} (2) ["name", "age"] 执行Array.from()可以将迭代器转为春数组,但是迭代器就被执行而清空了
values()    //返回 Map 对象中值的数组。
//同上
size    //获取 Map 对象中某键的值。
let map = new Map([
  ["name", 12],
  ["age", 12],
]);
console.log(map.size) // size是属性而非方法
// 2
clear() //删除 Map 中的所有元素。
delete()    //删除由键指定的元素。
has()   //如果键存在,则返回 true。
forEach()   //为每个键/值对调用回调。
let map = new Map([
  ["name", 12],
  ["age", 12],
]);
map.forEach((item,idx)=>{
  console.log(item,idx,',')
})
// 12 'name' ','
// 12 'age' ','

forof() //遍历map,同forEach等价,不同的是key和val的顺序

let map = new Map([
  ["name", 12],
  ["age", 12],
]);
map.forEach((val, key) => {
  console.log(val, key, ",");
});
for (const [key, val] of map) {
  console.log(val, key, ",");
}
// 12 'name' ','
// 12 'age' ','

 

 

 
posted @ 2022-09-03 10:12  jqynr  阅读(75)  评论(0)    收藏  举报