在 JavaScript 中,映射、Map 和 Set 有什么区别?

问题描述 投票:0回答:1

这个概念可能不会让我感到困惑,除非两个东西具有相同的名称并且似乎做完全不同的事情。有一个数组方法,又名 Array.map() ,它基本上(我知道这是一个过度简化)一个奇特的迭代器。我可以轻松地使用带有 for...循环的映射或过滤器执行任何操作,通常只需要更多行代码。

Map 类似于 Set。我认为Map更适合对象,并且它带有自己的增删改查操作。就此而言,我不知道为什么您会选择地图而不是集合,反之亦然。

我很想听听您如何创造性地将这些概念牢记在心。特别是如果您创建了类比来自己记住它,但也欢迎技术解释!

谢谢!

PS:

我确实从阅读 MDN 上的 MapsArray.prototype.map() 开始。我只是需要更多有创意的方式来思考它才能坚持下去。

已经在 JavaScript 领域工作了几年,刚刚开始学习 python...JS Map 更像是 Python 字典而不是对象吗?我认为字典是我一直在学习的一个对象,但也许它实际上是一个地图。我希望 JS 选择不同的名字。

javascript dictionary set array.prototype.map
1个回答
0
投票

地图:

假设您正在创建一个程序来存储学生信息。您希望将每个学生的 ID(唯一标识符)与其姓名和成绩相关联。地图非常适合这种情况。

const studentInfo = new Map();
studentInfo.set(12345, { name: "Alice", grades: [80, 95, 78] });
studentInfo.set(54321, { name: "Bob", grades: [90, 82, 100] });

console.log(studentInfo.get(12345)); // { name: "Alice", grades: [80, 95, 78] }

// You can use any data type as a key
studentInfo.set("star", { name: "Star Student", grades: [100, 100, 100] });

套装:

假设您想跟踪学生所修读的独特课程。 Set 在这里是理想的选择,因为它只存储唯一值并且不关心顺序。

const coursesTaken = new Set();
coursesTaken.add("Math");
coursesTaken.add("English");
coursesTaken.add("History");
coursesTaken.add("Math"); // Duplicate is ignored

console.log(coursesTaken); // Set { "Math", "English", "History" }

// Check if a specific course is present
console.log(coursesTaken.has("Science")); // false
© www.soinside.com 2019 - 2024. All rights reserved.