在javascript中创建一个哈希数组
Create an array of hashes in javascript
我想在javascript中创建一个哈希数组。换句话说,我想做以下事情
var messages = new Array;
messages['info'].push(["info message1", "info message2", "info message3"]);
messages['error'].push(["error message1", "error message2", "error message3"]);
,然后遍历每个键。但是它给了我一个错误"Cannot call method 'push' of undefined"
我该怎么做?
您正在尝试访问messages
的属性info
,该属性不存在,因此其值为undefined
。然后,您试图通过调用.push
将其视为数组。那不行。
我认为你真正想要的是将数组赋值给这些属性:
var messages = {};
messages['info'] = ["info message1", "info message2", "info message3"];
messages['error'] = ["error message1", "error message2", "error message3"];
// or
// messages.info = ["info message1", "info message2", "info message3"];
// ...
只使用带有数字键的数组。对于字符串键使用普通对象。
现在messages.info
已经定义为和,您可以向其添加新消息:
messages.info.push('some new message');
了解对象的更多信息
您还必须在主数组/对象中创建数组:
var messages = []; // you probably shoudln't have an arrray but {}
messages['info'] = [];
messages['info'].push(["info message1", "info message2", "info message3"]);
在调用.push()
之前必须创建一个空数组。此外,数组是为数字索引访问而设计的。如果你想通过属性名访问messages
,比如'info',那么你应该使用对象而不是数组:
var messages = {};
messages['info'] = [];
messages['info'].push(["info message1", "info message2", "info message3"]);
messages['error'] = [];
messages['error'].push(["error message1", "error message2", "error message3"]);
或者更简洁一点:
var messages = {};
messages['info'] = ["info message1", "info message2", "info message3"];
messages['error'] = ["error message1", "error message2", "error message3"];
在添加数组之前先创建数组:
messages['info'] = [];
您在使用messages['info']
或messages['error']
之前没有定义它。先初始化它。此外,数组不应该用于存储键/值映射,应该使用普通对象。
var messages = new Object;
messages['info'] = new Array;
messages['info'].push("info message1", "info message2", "info message3");
messages['error'] = new Array;
messages['error'].push("error message1", "error message2", "error message3");
请注意,您在原始代码中有另一个错误,即您将数组传递给.push()
,这将导致数组的数组的数组。
或者使用对象和数组字面值(推荐):
var messages = {};
messages['info'] = ["info message1", "info message2", "info message3"];
messages['error'] = ["error message1", "error message2", "error message3"];
相关文章:
- 可以在React Native中制作一个自哈希应用程序
- coffeescript/backline.js:编写一个对字符串进行操作的哈希函数
- 路由不起作用 AngularJS,只是添加一个哈希
- AngularJS,创建一个资源哈希
- 在 jquery 中从隐藏的哈希创建一个关联数组
- 使用 location.href 或类似内容打开一个 URL,后跟一个哈希符号
- 为什么从其他网络返回会保留最后一个哈希值,同时显示第一个哈希值的内容
- 如何替换位置哈希并只保留最后一个历史记录条目
- 链接到一个带有哈希片段的页面(这样用户就可以看到页面上的特定内容)问题
- 如何跟踪一个javascript行为的起源,特别是-添加哈希到我的url
- 为什么Javascript哈希使用一个对象作为键会覆盖另一个对象键?
- 更改位置哈希后返回到前一个url
- 如何触发一个Chrome扩展,内容脚本在URL中的给定哈希
- 为什么我的哈希表包含一个虚假的值
- 如何检查一个元素在id的哈希符号之后是否有一个字符串?
- 使用哈希#的多个页面中的一个页面
- JSON在URL哈希-一个坏的或好的主意
- 谷歌地图-用javascript构建一个哈希表和完美的哈希函数
- JavaScript的“对象”有多高效?有一个哈希表
- 在javascript中创建一个哈希数组