js之Set和Map类使用

<script>
  //----------------------------------------------------Set----------------------
  // Set(集合)是一组唯一值的集合。每个值只能在 Set 中出现一次。Set 可以容纳任何数据类型的值。
  // 创建 Set
  const letters = new Set(["b", "a", "c"]);
  console.log(typeof letters); //object
  console.log(letters instanceof Set); //true

  // 将值添加到 Set,添加相等的元素,只有第一个会被保存
  letters.add("d");
  letters.add("d");
  console.log(letters); //Set(4) {'b', 'a', 'c', 'd'}

  // 列出所有条目
  let text = "";
  letters.forEach(function (value) {
    text += value;
  });
  console.log(text); //bacd

  // values() 方法返回包含 Set 中所有值的 Iterator 对象,使用 Iterator 对象访问元素。
  // Set 没有键。keys() 返回与 values() 相同的结果。entries() 方法返回的是 [value,value] 值值对,而不是 [key,value] 键值对
  text = "";
  for (const entry of letters.values()) {
    text += entry;
  }
  console.log(text); //bacd
  text = "";
  for (const entry of letters.entries()) {
    text += entry;
  }
  console.log(text); //b,ba,ac,cd,d

  //has() 如果值存在则返回 true。 delete()    从 Set 中移除元素。
  if (letters.has("a")) letters.delete("a");
  console.log(letters); //Set(3) {'b', 'c', 'd'}

  //size 返回 Set 中元素的数量。
  console.log(letters.size); //3

  //clear()    从 Set 中移除所有元素。
  letters.clear();
  console.log(letters); //Set(0) {size: 0}
  console.log(letters.size); //0

  //----------------------------------------------------Map------------------------
  // Map 保存键值对,其中键可以是任何数据类型。Map 会记住键的原始插入顺序。Map 提供表示映射大小的属性。
  const fruits = new Map([
    ["apples", 500],
    ["bananas", 300],
    ["oranges", 200],
  ]);
  console.log(typeof fruits); //object
  console.log(fruits instanceof Map); //true

  //set() 为 Map 中的键设置值。get() 获取 Map 对象中键的值。
  fruits.set("lemons", 400);
  fruits.set("lemons", 100);
  console.log(fruits); //Map(4) {'apples' => 500, 'bananas' => 300, 'oranges' => 200, 'lemons' => 100}
  console.log(fruits.get("lemons")); //100

  // 列出所有条目
  text = "";
  fruits.forEach(function (value) {
    text += value;
  });
  console.log(text); //500300200100

  // values() 方法返回包含 Map 中所有值的 Iterator 对象,使用 Iterator 对象访问元素。
  // Map 没有键。keys() 返回与 values() 相同的结果。entries() 方法返回的是 [value,value] 值值对,而不是 [key,value] 键值对
  text = "";
  for (const entry of fruits.keys()) {
    text += entry;
  }
  console.log(text); //applesbananasorangeslemons
  text = "";
  for (const entry of fruits.entries()) {
    text += entry;
  }
  console.log(text); //apples,500bananas,300oranges,200lemons,100

  //has() 如果值存在则返回 true。 delete()    从 Map 中移除元素。
  if (fruits.has("apples")) fruits.delete("apples");
  console.log(fruits); //Map(3) {'bananas' => 300, 'oranges' => 200, 'lemons' => 100}

  //size 返回 Map 中元素的数量。
  console.log(fruits.size); //3

  //clear()    从 Map 中移除所有元素。
  fruits.clear();
  console.log(fruits); //Map(0) {size: 0}
  console.log(fruits.size); //0
</script>

 

posted @ 2023-07-26 15:44  carol2014  阅读(11)  评论(0编辑  收藏  举报