“;字典“;在JavaScript中创建
Trouble with "dictionary" creation in JavaScript
好吧,首先让我告诉你,我也在JavaScript方面还远远没有经验。。。(
所以。。。我们到了。。。
我想创建这样的结构(这只是一个示例):
Addresses
--- John
--- Phone
--- Address
--- Peter
--- Phone
--- Address
所以,我已经看到(或者我只是猜测)我可以做这样的事情(我已经在Chrome的JavaScript控制台中运行了所有测试):
var addresses = [];
addresses["John"] = {};
addresses["John"].Phone = "12312312312";
// And so on...
但是:
- 如果我执行CCD_ 1,则构造适当的124条目数组
- 如果我执行
addresses['somestring'] = {};
,则addresses
保持为空数组[]
我做错了什么?JavaScript中是否没有对正确的字典(或地图——无论如何调用)的本地支持?
请注意:我希望能够逐步向地址添加条目,以及向每个地址条目添加密钥(而不仅仅是一次创建)。
您正在创建一个数组,但随后将其用作对象(这是可能的,因为数组恰好是一个对象)。要包含属性而不是编号索引,您应该使用一个对象:
var addresses = {};
addresses["Holmes"] = { Phone: "14", Address: "Baker street 221b" };
JavaScript有对象和数组。
数组是一种对象类型,它处理具有特殊意义的数值属性。它将有一个基于最高值属性名称(即数字)的length
属性,并且它有push
、pop
和forEach
等方法来根据数字操作其数字成员。
如果我执行
addresses['123'] = {};
,则构造一个适当的124条目数组。
您已经有了一个数组。这只是添加了一个名为addresses['123'] = {};
0的成员,并更新了其length
。
If I do addresses['somestring'] = {};
这将把该成员添加到数组中,但它不会出现在任何访问数组成员的常规方法中。您必须按名称访问它。
不要将命名属性赋予数组。使用普通对象。
是否没有本地支持正确的字典
一个物体是尽可能接近的。
如果您想要排序,请使用具有数字属性的数组。
如果您想要具有命名键的东西,请使用对象。
执行此操作时,addresses['somestring'] = {};
将得到一个空数组,因为{}
正在分配一个空对象。
相反,如果执行addresses["dd"] = {s: "s"}
,则addresses
将具有对象
Javascript没有字典、映射或关联数组。
然而,它确实有一些非常相似的对象。(它们也可能大不相同,所以这一点很重要。)
更令人困惑的是,数组是对象。你可以把随机属性放在一个数组上,它就会像一个对象一样工作。
Javascript数组采用整数[*]索引并调整.length
属性。
对象采用字符串属性名称。这一点很重要:如果您使用不是字符串的东西,它将被转换为字符串。。通常称为[Object object]
可能想阅读以下内容:http://eloquentjavascript.net/chapter4.html
[*]是的,是的,他们真的是幕后操纵者。更容易将它们视为整数,避免这种悲伤。
- 用Javascript/PHP创建字典
- 在JSON中创建一个数据对(不是字典,而是两个独立的数据)
- 用Javascript从一个大的2D数组中编程创建一个字典
- 如何在AngularJS中创建类似字典的模型绑定
- 有没有办法在应用程序脚本中使用JavaScript为对象创建方法字典
- 如何在 javascript 中创建字典键值对数组
- 从JavaScript创建字典cookie
- 使用javascript创建新字典
- TypeScript 创建某个类型的字典
- 使用自定义函数从字典中创建列表/数组
- 用javascript从单个JSON响应创建多个字典
- 用Javascript创建一个类似.net的字典对象
- 使用django-template[python]中的json.dump或pprint在字典中逐行创建一个表
- 如何在jquery中创建字典的JSON数组
- 如何在另一个文件或Javascript块中创建字典的新对象
- Javascript不能在IE中创建字典
- 创建一个字典并按属性搜索
- 动态创建/创建变量's字典并打印
- 在这种情况下如何使用GAS来创建字典
- “;字典“;在JavaScript中创建