Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 何时使用{}上的映射_Javascript - Fatal编程技术网

Javascript 何时使用{}上的映射

Javascript 何时使用{}上的映射,javascript,Javascript,何时使用{}上的映射。使用Map可以完成的所有事情也可以使用{}即Object来实现,除了一件事是设置除string以外的其他类型的键 输出: 当我可以用其中任何一个做一些事情时,在什么情况下应该使用哪种方法。区别在于可以用字符串作为键,而可以用任何类型的键 如果您有一个数字,并且一个数字作为字符串,那么对于对象,键是相同的。如果它们不是转换为字符串的字符串,那么它们都是相同的。但是对于贴图,这两个键是不同的,并且指向不同的值 var m=新地图; m、 set1,‘数字1’; m、 设置“1

何时使用{}上的映射。使用Map可以完成的所有事情也可以使用{}即Object来实现,除了一件事是设置除string以外的其他类型的键

输出:

当我可以用其中任何一个做一些事情时,在什么情况下应该使用哪种方法。

区别在于可以用字符串作为键,而可以用任何类型的键

如果您有一个数字,并且一个数字作为字符串,那么对于对象,键是相同的。如果它们不是转换为字符串的字符串,那么它们都是相同的。但是对于贴图,这两个键是不同的,并且指向不同的值

var m=新地图; m、 set1,‘数字1’; m、 设置“1”,“字符串1”; console.logm.get1;//'1号' console.logm.get'1';/'字符串1' var o=Object.createnull;//没有原型的空对象 o[1]=“1号”; o['1']='string1';
控制台。徽标[1];/'字符串1'这是我曾经遇到的一个bug:

变量拼凑={ 主席:6,, 字:8,, 长度:10, 是:2,, 怪异:9 }; $.eachscrabled,functionk,v{ console.logk,v; }; 从

对象有一个原型,因此地图中有默认关键点。这 可以通过使用map=Object.createnull绕过ES5,但是 这件事很少做

对象的键是字符串和符号, 而它们可以是地图的任何值,包括函数、对象、, 和或任何原始的

您可以使用 属性,而必须确定对象的大小 手动

对于键不是字符串且键值对经常被删除或添加的集合,映射通常很有用。如果你的钥匙是固定的,那么一个物体会更适合你。

我相信这已经足够描述了

映射对象是一个简单的键/值映射。对象和基元值的任何值都可以用作键或值

比较对象和地图

对象与贴图类似,都可以将关键点设置为值, 检索这些值,删除键,并检测是否存在错误 储存在钥匙处。因为这个,因为没有内置的 历史上,物体曾被用作地图;然而 对象和贴图之间有着重要的区别 更好地使用地图:

对象有一个原型,因此地图中有默认关键点。这 自ES5以来,可以通过使用map=Object.createnull绕过,但很少这样做

对象的键是字符串和符号,而它们可以是贴图的任何值,包括函数、对象和/或任何基本体

使用size属性可以轻松获得贴图的大小,而对象的大小必须手动确定。 这并不意味着您应该在任何地方使用贴图,对象仍然是 在大多数情况下使用。映射实例仅对集合有用,并且 您应该考虑在以前使用的代码中修改代码。 这类活动的对象。对象应作为记录使用,带有字段和 方法。如果你仍然不确定该用哪一个,问问自己 以下问题:

密钥在运行时之前通常是未知的,您需要动态地查找它们吗? 所有值是否具有相同的类型,并且可以互换使用? 你需要不是字符串的键吗? 是否经常添加或删除键值对? 您有任意数量的键值对吗? 集合是否迭代? 这些都是你想要收藏地图的标志。如果在 相比之下,如果你有固定数量的钥匙,操作它们 单独使用,并区分它们的用法,然后您需要 反对


什么是新地图?@站长,不,不是。对不起,请忽略@NinaScholz@webmaster请仔细阅读问题。这个问题是关于javascript的映射对象,而不是java的。是的,是的,我的错误…这只是重复OP已经知道的东西…除了一件事,那就是设置除string@JJJ是的,这需要一次投票,因为OP已经知道他自己问题的答案。当然,如果这是唯一的区别,它不是,答案清楚地表明它不是,所以我真的看不出它有什么帮助。它甚至没有回答何时使用Map的问题。@JJJ这是主要的区别,OP没有问区别是什么。其他的差异通常对决定使用哪一个影响不大,这是OP问题的焦点。@JJJ,不,OP不知道,差异是什么。即使差异是已知的,其含义也是未知的。
var mp = new Map();    
mp.set(1, 'one');    
mp.set(2, 'two');    

var ob = {};    
ob[1] = 'one';    
ob[2] = 'two';    

console.log(mp);    
console.log(mp.get(1));    
console.log(typeof mp.keys().next().value);    

console.log(ob);    
console.log(ob[1]);    
console.log(typeof Object.keys(ob)[0]);
Map { 1 => 'one', 2 => 'two' }
one
number
{ '1': 'one', '2': 'two' }
one
string