Javascript многомерный массив неопределенная ошибка объекта - PullRequest
0 голосов
/ 09 ноября 2011

Я пытаюсь сделать двумерный массив из двух одномерных массивов с помощью этого кода:

  var PassAssoArr = new Array();
  for(k in PassPourcentNames) {
    PassAssoArr[k][0] = PassPourcentNames[k]
    PassAssoArr[k][1] = PassPourcentValue[k]
  }

Однако я получаю сообщение об ошибке: «undefined» является нулем или не объектом », и оно указывает на первую строку после оператора for. PassPourcentNames и PassPourcentValue имеют одинаковое количество элементов, и ни одно из значений не является нулевым. Первый содержит строки, а второй целые.

Любая помощь очень ценится.

Ответы [ 5 ]

1 голос
/ 09 ноября 2011

Javascript не поддерживает настоящие многомерные массивы.

Вы пытаетесь использовать вложенные массивы без создания внутренних массивов.

Вам нужно поместить массив в каждый элемент внешнего PassAssoArr:

PassAssoArr[index] = [];   //Empty array literal
1 голос
/ 09 ноября 2011

Сначала определите PassAssoArr[k] = []; перед присвоением [0] и [1].

0 голосов
/ 09 ноября 2011

Попробуйте просто сделать:

PassAssoArr[k] = new Array(PassPourcentNames[k], PassPourcentValue[k]);
0 голосов
/ 09 ноября 2011
  var PassAssoArr = new Array();
  for(k in PassPourcentNames) {
    PassAssoArr[k] = new Array();
    PassAssoArr[k][0] = PassPourcentNames[k]
    PassAssoArr[k][1] = PassPourcentValue[k]
  }

Также вместо new Array() вы можете использовать []

  var PassAssoArr = [];
  for(k in PassPourcentNames) {
    PassAssoArr[k] = [];
    PassAssoArr[k][0] = PassPourcentNames[k]
    PassAssoArr[k][1] = PassPourcentValue[k]
  }

Я считаю, что это на самом деле быстрее в большинстве двигателей JS.

0 голосов
/ 09 ноября 2011

Вы определяете только одно измерение PassAssoArr - вам нужно установить PassAssoArr [k] = new Array ();

...