【问题标题】:JavaScript: How to Get the Values from a Multi-Dimensional Array?JavaScript:如何从多维数组中获取值?
【发布时间】:2012-05-03 12:28:19
【问题描述】:

我正在尝试从多维数组中获取值。这就是我目前所拥有的。
当我选择数组中的第一个选项时,我需要 99 的值和图像,例如“比利·乔尔”。

var concertArray = [
    ["Billy Joel", "99", "equal.png"],
    ["Bryan Adams", "89", "higher.png"],
    ["Brian Adams", "25", "lower.png"]
];

function populate(){
    for(i = 0; i < concertArray.length; i++){
        var select = document.getElementById("test");
        select.options[select.options.length] = new Option(concertArray[i][0], concertArray[i][1]);
    }
}

【问题讨论】:

    标签: javascript arrays multidimensional-array


    【解决方案1】:

    您可以尝试将多维数组转换为对象数组,如下所示:

    var concertArray = [
        {name: "Billy Joel", value: 99, image: "equal.png"},
        {name: "Bryan Adams", value: 89, image: "higher.png"},
        {name: "Brian Adams", value: 25, image: "lower.png"}
    ];
    

    然后你可以像普通对象一样访问数组中的项目:

    var concertName = concertArray[0].name;
    var concertPrice = parseFloat(concertArray[0].value);
    var concertImage = concertArray[0].image;
    

    【讨论】:

    • 如何迭代这种数组?
    【解决方案2】:

    let concertArray = [
        ["Billy Joel", "99", "equal.png"],
        ["Bryan Adams", "89", "higher.png"],
        ["Brian Adams", "25", "lower.png"]
    ];
    
    let i = 0;
    
    console.log(concertArray[i][1]) // 99
    console.log(concertArray[i][2]) // equal.png

    【讨论】:

    • 非常感谢.... 现在,我需要做些什么来完成以下结构中的 ConcertImage:concertName = ConcertList.options[concertIndex].text; ConcertPrice = parseFloat(concertList.options[concertIndex].value); ConcertImage = ???
    【解决方案3】:

    AFAIK,Option 构造函数只接受两个参数,文本和value。如果你想传递更多的数据,我建议你使用 HTML5 数据 API:

    var opt = new Option(concertArray[i][0], concertArray[i][1]);
    opt.setAttribute('data-image', concertArray[i][2]);
    select.options[select.options.length] = opt;
    

    然后你可以使用getAttribute('data-image')获取它

    【讨论】:

      【解决方案4】:

      您可以使用 2 个 for 循环访问值,如下所示。

      var concertArray = [
          ["Billy Joel", "99", "equal.png"],
          ["Bryan Adams", "89", "higher.png"],
          ["Brian Adams", "25", "lower.png"]
          ];
      
      function populate(){
          for(i=0;i<arr.length;i++)
          {
              for(j=0;j<arr[i].length;j++)
              {
                   console.log(arr[i][j]);
              }
          }
      }
      

      【讨论】:

      • 这个答案对于大型数组来说非常糟糕。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-20
      • 2021-10-17
      相关资源
      最近更新 更多