[英]How to get a value from an array by name instead of key-number
我创建了一个对象,并添加了带有一些属性的资产b345
:
asset = [];
asset.push({'b345' : { 'prop1':'value 1', 'prop2': null}});
我想稍后再动态地将更多资产推入相同的资产对象。 这样asset
对象将保存代码中生成的所有资产。
稍后在我的代码中,我想通过唯一标识符b345
检索与条目之一关联的数组。 但这似乎不起作用。
asset['b345'];
但这导致undefined
。 但是,如果我尝试通过asset[0]
获取数据,它将返回正确的对象。
我如何安排该容器对象asset
以便我可以
1-轻松添加新对象
2-通过标识符检索对象?
ps:我发现了这一点: https : //npmjs.org/package/hashtable,但这仅适用于大型存储; 它说只能通过对象来完成。 但是我找不到它是如何工作的:(
使用对象代替使用数组
asset = {};
asset['b345'] = { 'prop1':'value 1', 'prop2': null};
那么asset['b345']
会给您{ 'prop1':'value 1', 'prop2': null}
如果您不需要以某种一致的顺序遍历对象列表,则可能不应该首先创建数组。 只是做一个对象:
var asset = {};
asset['b345'] = { 'prop1':'value 1', 'prop2': null};
如果确实需要同时具有数组行为和键查找,那么一种有效的方法是制作一个数组和一个对象:
var assets = {
list: []
, map: {}
, push: function(key, value) {
map[key] = value;
list.push({ key: value });
}
};
然后:
assets.push('b345', { 'prop1': 'value 1', 'prop2': null });
随后, assets.list[0]
将为{ b345: { prop1: 'value 1', prop2: null }}
, assets.map['b345']
将为{prop1: 'value 1', 'prop2': null}
。
您希望使它能够更正确地处理更新,但这是基本模式。
有很多方法可以做到这一点。 简单地解决这个问题:
var asset = new Object; // new object
asset['b345'] = {'prop1':'value 1', 'prop2': null}; // an object property = new object (wrapped in {})
另一种方法是:
asset = {'b345' : { 'prop1':'value 1', 'prop2': null}};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.