JavaScript 中的 Map.entries()
JavaScript 中的地图是什么?
- Map 是 JavaScript 中的一种数据结构,它允许存储 [key, value] 对,其中任何值都可以用作键或值。
- 地图集合中的键和值可以是任何类型,如果使用集合中已存在的键将值添加到地图集合,则新值将替换旧值。
- map 对象中元素的迭代按插入顺序完成,“for...”循环为每次迭代返回一个包含所有 [key, value] 对的数组。
JavaScript 中对象和地图的区别
这两种数据结构在很多方面都相似,例如都使用键存储值、允许使用键检索这些值、删除键以及验证键是否包含任何值。然而,JavaScript 中的 Objects 和 Maps 之间存在相当显着的差异,这使得在许多情况下使用 Maps 成为更好和更可取的选择。
- 映射中使用的键可以是任何类型的值,例如函数、对象等,而对象中的键仅限于符号和字符串。
- 使用 size 属性可以很容易地知道地图的大小,但是在处理对象时,必须手动确定大小。
- 在需要频繁添加和删除 [key, value] 对的情况下,应该首选 Map,因为 map 是迭代数据类型,可以直接迭代,而迭代对象需要以特定方式获取其键。
JavaScript 中的 Map.entries() 方法
JavaScript 中的 Map.entries() 方法用于返回一个迭代器对象,该对象包含地图每个元素的所有 [key, value] 对。它按照插入顺序返回映射中所有元素的 [key, value] 对。
Map.entries() 方法不需要传递任何参数并返回映射的迭代器对象。
应用:
每当我们想使用迭代器对象获取映射的每个元素的所有 [key, value] 对时,我们使用 Map.entries() 方法。
句法:
mapObj.entries()
Parameters Used:
- It does not require any parameters to be passed.
Return Value:
- The Map.entries() method returns the [key, value] pairs of all the elements of a map in the order of their insertion.
下面提供了上述函数的示例。
例子:
Input : var myMap = new Map();
myMap.set(0, 'geeksforgeeks');
myMap.set(1, 'is an online portal');
myMap.set(2, 'for geeks');
var iterator_obj=myMap.entries();
document.write(iterator_obj.next().value,"
");
document.write(iterator_obj.next().value,"
");
document.write(iterator_obj.next().value,"
");
Output : Array [0, "geeksforgeeks"]
Array [1, "is an online portal"]
Array [2, "for geeks"]
说明:在本例中,创建了一个包含三个 [key, value] 对的映射对象“myMap”,并创建了一个迭代器对象“iterator_obj”方法,该方法使用 Map.entries() 方法返回 [key, value]按插入顺序对映射的所有元素进行配对。
代码 1:
输出 :
Array [0, "geeksforgeeks"]
Array [1, "is an online portal"]
Array [2, "for geeks"]
代码 2:
输出 :
Array [0, "Maps"]
Array [1, "in JavaScript"]
例外:
- 如果变量不是 Map 类型,则 Map.entries() 操作会抛出 TypeError。
- 如果与映射的 [key, value] 对相比,“iterator_obj.next().value”被使用的次数更多,则 Map.entries()函数在所有这些情况下都返回 undefined。
参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/entries