【JavaScript】Map

Map

Map 构造器,构造 map 对象。

const map = new Map()
console.log(map)

【JavaScript】Map_第1张图片

Entries:存放属性
size:属性的数量

get():获取值
has():是否有某个键名(属性)
keys():获取所有的键名
set():设置值
value():获取键名对应的键值
Symbol(Symbol.iterator):可迭代协议(for of 必须支持这个协议才可以使用)
...

【JavaScript】Map_第2张图片

const m = new Map()
m.set('a',1)
m.set('b',2)
m.set('c',3)
for (const [key,value] of m) {
    console.log(key,value)
}
// 对象只能 for in 枚举,不能 for of 迭代遍历,因为不具有(类似于数组的)原则性顺序
const obj = {
    a: 1,
    b: 2,
    c: 3
}
for (const key in obj) {
    console.log(key,obj[key])
}

【JavaScript】Map_第3张图片

如果想要强行使用 for of 遍历对象,可以在原型上添加可迭代协议。

// ES6 生成器方式实现
Object.prototype[Symbol.iterator] = 
function* () {
  let keys = Object.keys(this)
  for (const key of keys) {
      yield [key, this[key]]
  }
}
const obj = {
  a: 1,
  b: 2,
  c: 3
}
for (const [key,value] of obj) {
  console.log(key,value);
}

【JavaScript】Map_第4张图片

迭代器和生成器

迭代器(Iterator)是一种对象,它提供了一种遍历集合(如数组或集合)的方法。它提供了一种顺序访问集合中的元素,且不必在访问完毕后显式地关闭迭代器。这意味着,我们可以通过调用迭代器的 next() 方法多次来遍历集合中的元素,每次调用 next() 方法都会返回下一个元素。

生成器(Generator)是 JavaScript 中的一种特殊函数,它允许我们创建一种可以暂停和恢复的函数。当一个函数被声明为生成器时,它会在执行到 yield 语句时暂停,并返回一个值给调用者。当再次调用生成器时,它会从上次暂停的地方继续执行,直到再次遇到 yield 语句。

const arr = [1, 2, 3]
function* generator(arr) {
   for (let i = 0; i < arr.length; i++) {
       yield arr[i]
   }
}
const iterator = generator(arr)
console.log(iterator.next())
console.log(iterator.next())
console.log(iterator.next())
console.log(iterator.next())

【JavaScript】Map_第5张图片

你可能感兴趣的:(JavaScript,javascript,前端,开发语言)