[英]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.