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