0Pricing
JavaScript Academy · 课时

迭代模式

使用 for...of 迭代 Map 和 Set;使用 entries/keys/values;转换为数组;构建小型计数器和唯一列表

迭代模式 是 CoddyKit 上的免费 JavaScript Academy 课时。 这是第 3 节课,共 3 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 JavaScript Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 JavaScript Academy 课程共包含 3 节课。

迭代概览

目标:学习简单、清晰的迭代方式。

  • 映射:条目、键、值
  • 集合:值
  • 转换为数组
  • 频率计数器与唯一列表
迭代模式 — 插图 1

映射:entries/keys/values

对映射使用for...of以获取[键, 值];也可以使用 keys() 和 values()。

// Map iterates as [key, value] pairs
const prices = new Map();
prices.set("apple", 3);
prices.set("banana", 2);

for (const [item, cost] of prices) {
  console.log(item, cost);
}

// You can also use keys() or values()
for (const k of prices.keys()) {
  console.log("key:", k);
}
for (const v of prices.values()) {
  console.log("value:", v);
}
迭代模式 — 插图 2

集合:简单循环

集合按照插入顺序产生唯一值;重复值会被忽略。

// Set iterates values in insertion order
const colors = new Set(["red", "green", "red", "blue"]);

for (const c of colors) {
  console.log("color:", c);
}

console.log("size:", colors.size);
迭代模式 — 插图 3

使用 Array.from 进行转换

使用Array.from将映射/集合转换为数组(也可以将键值对转换为映射)。

// Convert Map to array of pairs, and back
const map1 = new Map([["a", 1], ["b", 2]]);
const pairs = Array.from(map1); // [["a",1],["b",2]]
console.log("pairs:", pairs);

const map2 = new Map(pairs);
console.log("map2 has a?", map2.has("a"));

// Set to array of values
const set1 = new Set([1, 1, 2, 3]);
const arr = Array.from(set1); // [1,2,3]
console.log("arr:", arr);
迭代模式 — 插图 4

频率计数器

映射计数器是统计列表中各项出现次数的清晰方式。

// Count items in an array using Map
function countItems(list) {
  const counts = new Map();
  for (const x of list) {
    const n = counts.get(x) || 0;
    counts.set(x, n + 1);
  }
  return counts;
}

const fruits = ["apple", "banana", "apple", "apple", "banana"];
const counts = countItems(fruits);

// Print counts as "item: n"
for (const [name, n] of counts) {
  console.log(name + ":", n);
}
迭代模式 — 插图 5

唯一值与成员资格

使用集合构建唯一列表,并通过has快速检查成员资格。

// Unique values with Set, quick membership test
const numbers = [2, 3, 2, 4, 3, 5];
const unique = Array.from(new Set(numbers));
console.log("unique:", unique);

// Quick membership with Set.has
const allowed = new Set([2, 5]);
console.log("allowed has 2?", allowed.has(2));
console.log("allowed has 4?", allowed.has(4));
迭代模式 — 插图 6

映射迭代测验

快速检查:获取键和值的最佳映射循环。

迭代模式 — 插图 7

回顾

回顾:使用for...of迭代映射以获取 [键, 值],直接循环集合中的值,并使用Array.from进行转换。使用映射记录计数,使用集合创建唯一列表。

迭代模式 — 插图 8

常见问题解答

「迭代模式」课时是免费的吗?

是的 — 「迭代模式」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 JavaScript Academy 课程的其余内容,请升级到 CoddyKit PRO。 JavaScript Academy 课程共包含 3 节课。

「迭代模式」这节课中我会学到什么?

使用 for...of 迭代 Map 和 Set;使用 entries/keys/values;转换为数组;构建小型计数器和唯一列表 你通过在浏览器中直接运行的动手代码来练习 JavaScript Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 JavaScript Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 JavaScript Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 3 节。

「迭代模式」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 JavaScript Academy 课中编写并运行代码吗?

能。每节 JavaScript Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. Map 与 Set 基础
  2. WeakMap 与 WeakSet——简单的隐私保护与缓存
  3. 迭代模式
← 返回 JavaScript Academy