JavaScript Map 与对象
本教程是关于 JavaScript 中的 Map 和对象的,我们将在其中比较它们并学习如何使用它们。
在 JavaScript 中定义 Map
JavaScript Map 是一种以键值对形式存储数据的数据结构。它会记住键的原始插入顺序。
Map 避免了重复性,因为每一对都有一个唯一的键和一个映射到该特定键的值。键可以是任何值,包括原语、对象和函数。
map 是可迭代的,所以我们可以使用 for...of
循环遍历元素。
在 JavaScript 中定义对象
对象也以键值对形式存储数据,就像 Map 一样。每个键值对在对象中被称为属性
。
对象的键只能是字符串类型。如果你使用数字作为对象中的键,它将被转换为字符串。
对象在使用 iterable protocol 之前是不可迭代的。
现在我们对 Map 和 Object 有了基本的了解。让我们通过使用表格来比较它们以使概念清晰。
S# | JavaScript Map | JavaScript 对象 |
---|---|---|
1 | Map 被称为对象的实例。 | Object 不是 Map 的一个实例。 |
2 | Map 保持原来的插入顺序。 | 对象不保留原始插入顺序。 |
3 | key 的类型可以是任意值,包括 String、Object、函数等。 | key 的类型只能是 String 类型。 |
4 | 我们可以使用以下代码快速获取 Map 的大小:<br />map.size |
需要手动计算才能使用以下代码找到对象的大小:<br />Object.keys(obj).length |
5 | Map 是可迭代的,可以使用 for...of 循环来完成,如下所示:<br />for (const m of map){<br /> console.log(m);<br />} |
对象是不可迭代的,我们必须持有对象的键才能遍历。 <br />Object.keys(obj).forEach(key => {<br /> console.log(key, obj[key]);<br />} |
6 | 没有默认键。 | 对象可以从原型继承键。 |
7 | 我们必须编写一个自定义解析器来将 Map 转换为 JSON 字符串。 | 对象可以使用 JSON.stringify 转换为 JSON 字符串。 |
JavaScript 中的 Map 代码示例
JavaScript 代码:
const map = new Map(); // create map
const keyOfStringType = 'string'; // make a key of string type
const keyOfObjectType = {}; // make a key of object type
const keyOfFunctionType = function() {}; // make the function a key
// setting the values with all tpes of keys
map.set(keyOfStringType, 'String Value');
map.set(keyOfObjectType, 'Object Value');
map.set(keyOfFunctionType, 'function Value');
// check if the map is an instance of object
console.log(map instanceof Object);
// map size
console.log('Map Size: ' + map.size);
// get value of key `keyofStyingType`
console.log('Value at key named keyOfStringType: ' + map.get(keyOfStringType));
// iterate over the map elements
console.log('Iterate over the Map elements');
for (const m of map) {
console.log(m);
}
输出:
true
"Map Size: 3"
"Value at key named keyOfStringType: String Value"
"Iterate over the Map elements"
["string", "String Value"]
[{ ... }, "Object Value"]
[function() {}, "function Value"]
JavaScript 中对象的代码示例
可以通过下面列出的三种方式创建对象。
使用字符串文字创建 JavaScript 对象:
let person = {name: 'Mehvish Ashiq', city: 'Lahore', email: 'mehvish@yahoo.com'}
通过创建对象实例来创建 JavaScript 对象:
const person = new Object(); // we used this method in this tutorial
使用对象构造函数创建 JavaScript 对象:
function person(name, city, email) {
this.name = name;
this.city = city;
this.email = email;
}
let p = new person('Mehvish Ashiq', 'Lahore', 'delfstack@example.com');
你可以在此处找到有关对象的更多信息。现在让我们练习一下启动代码。
JavaScript 代码:
// create object using instance of object
const person = new Object();
// set the properties and values
person.firstname = 'Mehvish';
person.lastname = 'Ashiq';
person.age = 30;
person.showInfo =
function() {
console.log(
`${person.firstname} ${person.lastname} is ${person.age} years old`);
}
// check if an object named person is an instance of Map
console.log(person instanceof Map);
// object size
console.log('Object Size: ' + Object.keys(person).length);
// get value of key `firstname`
console.log('Value at key named firstname: ' + person.firstname);
// get all keys
console.log('Object Keys: ' + Object.keys(person));
// get all values
console.log('Object Values: ' + Object.values(person));
// iterate over the person object elements
console.log('Iterate over the person object elements');
Object.keys(person).forEach(key => {
console.log(key, person[key]);
});
输出:
false
"Object Size: 4"
"Value at key named firstname: Mehvish"
"Object Keys: firstname,lastname,age,showInfo"
"Object Values: Mehvish,Ashiq,30,function(){
console.log(`${person.firstname} ${person.lastname} is ${person.age} years old`);
}"
"Iterate over the person object elements"
"firstname", "Mehvish"
"lastname", "Ashiq"
"age", 30
"showInfo", function(){
console.log(`${person.firstname} ${person.lastname} is ${person.age} years old`);
}
相关文章
Do you understand JavaScript closures?
发布时间:2025/02/21 浏览次数:108 分类:JavaScript
-
The function of a closure can be inferred from its name, suggesting that it is related to the concept of scope. A closure itself is a core concept in JavaScript, and being a core concept, it is naturally also a difficult one.
Do you know about the hidden traps in variables in JavaScript?
发布时间:2025/02/21 浏览次数:178 分类:JavaScript
-
Whether you're just starting to learn JavaScript or have been using it for a long time, I believe you'll encounter some traps related to JavaScript variable scope. The goal is to identify these traps before you fall into them, in order to av
How much do you know about the Prototype Chain?
发布时间:2025/02/21 浏览次数:150 分类:JavaScript
-
The prototype chain can be considered one of the core features of JavaScript, and certainly one of its more challenging aspects. If you've learned other object-oriented programming languages, you may find it somewhat confusing when you start
用 jQuery 检查复选框是否被选中
发布时间:2024/03/24 浏览次数:102 分类:JavaScript
-
在本教程中学习 jQuery 检查复选框是否被选中的所有很酷的方法。我们展示了使用直接 DOM 操作、提取 JavaScript 属性的 jQuery 方法以及使用 jQuery 选择器的不同方法。你还将找到许多有用的
jQuery 中的 Window.onload 与 $(document).ready
发布时间:2024/03/24 浏览次数:180 分类:JavaScript
-
本教程演示了如何在 jQuery 中使用 Window.onload 和 $(document).ready 事件。