如何访问Javascript 2D对象数组?

时间:2014-05-21 02:21:13

标签: javascript arrays multidimensional-array

我有一个全局数组,我声明为

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?

2 个答案:

答案 0 :(得分:2)

由于Javascript数组不支持密钥,我建议你使用一个对象。否则,您必须每次遍历整个数组以查找所需的键。

var fileMappings = {};

而不是push(),定义一个新属性:

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

这样,您可以使用fileMappings['btn11']

访问您的对象

答案 1 :(得分: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
}

或者如果您想使用ES5功能:

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

但我认为第一种更简单,更容易维护。