2014-05-21 27 views
0

我有一個全局的數組,我聲明爲如何訪問Javascript 2D對象數組?

var fileMappings = []; 

我做了一些工作,並添加一行到陣列像這樣:

fileMappings.push({ buttonNumber: number, audioFile: file }); 

,如果我做一個JSON.stringify(fileMappings)我得到這個:

[{「buttonNumber」:」btn11」,」audioFile」:{0A0990BC-8AC8-4C1C-B089-D7F0B30DF858}}, 
{「buttonNumber」:」btn12」,」audioFile」:{2FCC34A6-BD1A-4798-BB28-131F3B546BB6}}, 
{「buttonNumber」:」btn13」,」audioFile」:{53A206EC-7477-4E65-98CC-7154B347E331}}] 

如何訪問「btn11」等的GUID?

+1

fileMappings [0] [「audioFile」] –

+1

我可以建議學習一種您將使用的語言嗎? https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array - 這是101基礎,很容易找到。 –

回答

2

由於JavaScript數組不支持鍵,我建議您使用一個對象。否則,您必須每次遍歷整個數組以查找所需的密鑰。

var fileMappings = {}; 

代替push()而且,定義一個新的屬性:

fileMappings[number] = { buttonNumber: number, audioFile: file }; 

這樣,您就可以與fileMappings['btn11']

1

可以遍歷數組成員找到按鈕來訪問你的對象,然後返回它的GUID:

function findGUID(arr, buttonNumber) { 
    for (var i=0, iLen=arr.length; i<iLen; i++) [ 
    if (arr[i].buttonNumber == buttonNumber) { 
     return arr[i].audioFile; 
    } 
    } 
    // return undefined - buttonNumber not found 
} 

或者如果你想使用E S5功能:

function getGUID(arr, buttonNumber) { 
    var guid; 
    arr.some(function(obj) { 
      return obj.buttonNumber == buttonNumber && (guid = obj.audioFile); 
      }); 
    return guid; 
} 

但我認爲第一個更簡單,更容易維護。