簡體   English   中英

如何通過名稱而不是鍵號從數組中獲取值

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM