Передача двумерного ассоциативного массива в фунцию

Тема в разделе "JavaScript", создана пользователем Dark Wizard, 3 авг 2015.

Модераторы: ZiX
  1. Dark Wizard

    Dark Wizard

    Регистр.:
    23 сен 2007
    Сообщения:
    153
    Симпатии:
    76
    Проблема:

    есть массив:

    Код:
    <script>
    model[1][seria] = 111; 
    model[2][seria] = 222;
    model[3][seria] = 444;   
    
    function showseria(){
    document.write(model[1][seria]);
    }
    
    </script>
    
    Пробовал и объявлять вначале по всякому, например:
    Код:
    var model = new Array();
    model[seria] = new Array();
    и передавать в функцию всеми способами, и обращаться через window.

    Работает только объявление массива внутри функции, либо сначала забить массив в какой-нибудь input, а в функции брать данные из document.getElementById('inputid').value

    Как правильно передать двумерный ассоциативный массив в функцию (или как-то сделать этот массив глобальным)?
     
  2. Aglok

    Aglok ∞³

    Регистр.:
    9 янв 2012
    Сообщения:
    160
    Симпатии:
    46
    Нужно установить мерность массива.
    Код:
    var model = new Array([],[],[],[]);
    var seria = 'd';
    model[0][seria] = 111;
    model[1][seria] = 111;
    model[2][seria] = 222;
    model[3][seria] = 444;  
    function showseria(){
    document.write(model[3][seria]);
    }
     
    Dark Wizard нравится это.
  3. Dark Wizard

    Dark Wizard

    Регистр.:
    23 сен 2007
    Сообщения:
    153
    Симпатии:
    76
    т.е. если у меня 31 модель, нужно 32 пар скобочек в new Array() ?
     
  4. Aglok

    Aglok ∞³

    Регистр.:
    9 янв 2012
    Сообщения:
    160
    Симпатии:
    46
    У тебя многомерный массив. Если тебе можно обойтись 2 мерным. То:
    Код:
    model[0][seria1] = 111;
    model[0][seria2] = 111;
    model[0][seria3] = 222;
    model[0][seria4] = 444;
    }
     
    Dark Wizard нравится это.
  5. Dark Wizard

    Dark Wizard

    Регистр.:
    23 сен 2007
    Сообщения:
    153
    Симпатии:
    76
    на самом деле у меня вот такой массив, если полностью, и мне нужно с ним работать в функции...

    Код:
    model[1][seria] = 1;
    model[1][type] = "Конденсационный";
    model[1][name] = "Vitodens100WB1C";
    model[1][kotel_power] = 26;
    model[1][rashod_topliva] = 2.6;
    
    model[2][seria] = 1;
    model[2][type] = "Конденсационный";
    model[2][name] = "Vitodens100WB1C";
    model[2][kotel_power] = 35;
    model[1][rashod_topliva] = 3.5;
    
    model[3][seria] = 1;
    model[3][type] = "Конденсационный";
    model[3][name] = "Vitodens100WB1C";
    model[3][kotel_power] = 26;
    model[3][rashod_topliva] = 1.9;
    model[3][toplivo] = "сж.газ";
    
    model[4][seria] = 1;
    model[4][type] = "Конденсационный";
    model[4][name] = "Vitodens100WB1C";
    model[4][kotel_power] = 35;
    model[4][rashod_topliva] = 2.6;
    model[4][toplivo] = "сж.газ";
    
    model[5][seria] = 2;
    model[5][type] = "Традиционный";
    model[5][name] = "Vitopend100WH1D";
    model[5][kotel_power] = 24.8;
    model[5][rashod_topliva] = 2.83;
    
    model[6][seria] = 2;
    model[6][type] = "Традиционный";
    model[6][name] = "Vitopend100WH1D";
    model[6][kotel_power] = 31;
    model[6][rashod_topliva] = 3.53;
    
    model[7][seria] = 2;
    model[7][type] = "Традиционный";
    model[7][name] = "Vitopend100WH1D";
    model[7][kotel_power] = 24.8;
    model[7][rashod_topliva] = 2.09;
    model[7][toplivo] = "сж.газ";
    
    model[8][seria] = 2;
    model[8][type] = "Традиционный";
    model[8][name] = "Vitopend100WH1D";
    model[8][kotel_power] = 31;
    model[8][rashod_topliva] = 2.61;
    model[8][toplivo] = "сж.газ";
    
    model[9][seria] = 3;
    model[9][type] = "Конденсационный";
    model[9][name] = "Vitodens200B2HA";
    model[9][kotel_power] = 35;
    model[9][rashod_topliva] = 3.48;
    
    model[10][seria] = 3;
    model[10][type] = "Конденсационный";
    model[10][name] = "Vitodens200B2HA";
    model[10][kotel_power] = 45;
    model[10][rashod_topliva] = 4.47;
    
    model[11][seria] = 3;
    model[11][type] = "Конденсационный";
    model[11][name] = "Vitodens200B2HA";
    model[11][kotel_power] = 60;
    model[11][rashod_topliva] = 5.95;
    
    model[12][seria] = 3;
    model[12][type] = "Конденсационный";
    model[12][name] = "Vitodens200B2HA";
    model[12][kotel_power] = 80;
    model[12][rashod_topliva] = 7.94;
    
    model[13][seria] = 3;
    model[13][type] = "Конденсационный";
    model[13][name] = "Vitodens200B2HA";
    model[13][kotel_power] = 100;
    model[13][rashod_topliva] = 9.93;
    
    model[14][seria] = 3;
    model[14][type] = "Конденсационный";
    model[14][name] = "Vitodens200B2HA";
    model[14][kotel_power] = 45;
    model[14][rashod_topliva] = 3.3;
    model[14][toplivo] = "сж.газ";
    
    model[15][seria] = 3;
    model[15][type] = "Конденсационный";
    model[15][name] = "Vitodens200B2HA";
    model[15][kotel_power] = 60;
    model[15][rashod_topliva] = 4.39;
    model[15][toplivo] = "сж.газ";
    
    model[16][seria] = 3;
    model[16][type] = "Конденсационный";
    model[16][name] = "Vitodens200B2HA";
    model[16][kotel_power] = 80;
    model[16][rashod_topliva] = 5.86;
    model[16][toplivo] = "сж.газ";
    
    model[17][seria] = 3;
    model[17][type] = "Конденсационный";
    model[17][name] = "Vitodens200B2HA";
    model[17][kotel_power] = 100;
    model[17][rashod_topliva] = 7.33;
    model[17][toplivo] = "сж.газ";
    
    model[18][seria] = 4;
    model[18][type] = "Традиционный";
    model[18][name] = "Vitogas100-F";
    model[18][kotel_power] = 35;
    model[18][rashod_topliva] = 4.09;
    
    model[19][seria] = 4;
    model[19][type] = "Традиционный";
    model[19][name] = "Vitogas100-F";
    model[19][kotel_power] = 48;
    model[19][rashod_topliva] = 5.61;
    
    model[20][seria] = 4;
    model[20][type] = "Традиционный";
    model[20][name] = "Vitogas100-F";
    model[20][kotel_power] = 60;
    model[20][rashod_topliva] = 7.01;
    
    model[21][seria] = 4;
    model[21][type] = "Традиционный";
    model[21][name] = "Vitogas100-F";
    model[21][kotel_power] = 84;
    model[21][rashod_topliva] = 9.66;
    
    model[22][seria] = 4;
    model[22][type] = "Традиционный";
    model[22][name] = "Vitogas100-F";
    model[22][kotel_power] = 108;
    model[22][rashod_topliva] = 12.42;
    
    model[23][seria] = 5;
    model[23][type] = "Традиционный";
    model[23][name] = "Vitola200";
    model[23][kotel_power] = 18;
    model[23][rashod_topliva] = 2;
    
    model[24][seria] = 6;
    model[24][type] = "Тепловой насос";
    model[24][name] = "Vitocal300-G";
    model[24][kotel_power] = 17;
    model[24][rashod_topliva] = 3.8;
    
    model[25][seria] = 7;
    model[25][type] = "Конденсационный";
    model[25][name] = "Vitorondens200-T";
    model[25][kotel_power] = 35.4;
    model[25][rashod_topliva] = 3.4;
    
    model[26][seria] = 8;
    model[26][type] = "Традиционный";
    model[26][name] = "Vitorond200";
    model[26][kotel_power] = 33;
    model[26][rashod_topliva] = 3.6;
    
    model[27][seria] = 9;
    model[27][type] = "Конденсационный";
    model[27][name] = "Vitocrossal200CM2";
    model[27][kotel_power] = 87;
    model[27][rashod_topliva] = 8.7;
    
    model[28][seria] = 10;
    model[28][type] = "Традиционный";
    model[28][name] = "Vitoplex200SX2A";
    model[28][kotel_power] = 90;
    model[28][rashod_topliva] = 10.4;
    
    model[29][seria] = 11;
    model[29][type] = "Конденсационный";
    model[29][name] = "Vitocrossal300CT3U";
    model[29][kotel_power] = 630;
    model[29][rashod_topliva] = 62.8;
    
    model[30][seria] = 10;
    model[30][type] = "Традиционный";
    model[30][name] = "Vitoplex200SX2A";
    model[30][kotel_power] = 560;
    model[30][rashod_topliva] = 64.5;
    
    model[31][seria] = 12;
    model[31][type] = "Электрокотел";
    model[31][name] = "Котел";
    model[31][kotel_power] = 17;
    model[31][rashod_topliva] = 17;
    
     
  6. Aglok

    Aglok ∞³

    Регистр.:
    9 янв 2012
    Сообщения:
    160
    Симпатии:
    46
    Можно создать конструктором.
    Код:
    var table = new Array(33);
    for(var i = 0; i < table.length; i++)
      table[i] = new Array(5);
    
     
  7. Dark Wizard

    Dark Wizard

    Регистр.:
    23 сен 2007
    Сообщения:
    153
    Симпатии:
    76
    Aglok, извини за вопрос, но как будет выглядеть такой код полностью? Не совсем понял, как массив table связать с массивом model...
     
  8. Aglok

    Aglok ∞³

    Регистр.:
    9 янв 2012
    Сообщения:
    160
    Симпатии:
    46
    Код:
    var model = new Array(33);
    for(var i = 0; i < model.length; i++)
      model[i] = new Array(5);
     
  9. Dark Wizard

    Dark Wizard

    Регистр.:
    23 сен 2007
    Сообщения:
    153
    Симпатии:
    76
    Странно, так пробовал, у меня не работает:

    Код:
    <script>
    var model = new Array(33);
    for(var i = 0; i < model.length; i++){
    model[i] = new Array(5);
    }
    
    model[0][seria] = 111;
    model[1][seria] = 111;
    model[2][seria] = 222;
    model[3][seria] = 444;
    model[4][seria] = 444;
    model[5][seria] = 555;
    model[6][seria] = 666;
    model[7][seria] = 777;
    
    function showseria(){
    document.write(model[5][seria]);
    }
    </script>
    <br><br><br><br><br><br><center><a href="#" onclick="showseria();">TEST ME</a></center>
    
     
  10. Aglok

    Aglok ∞³

    Регистр.:
    9 янв 2012
    Сообщения:
    160
    Симпатии:
    46
    Напиши
    Код:
    var seria;
    У тебя переменная не определяется.
     
    Dark Wizard нравится это.