заполнение многомерного массива в JavaScript - PullRequest
0 голосов
/ 13 июля 2011

Я начну с массива строк, где каждый элемент массива разделен "//".например, temp[0] = {"sky//hi//pi"}, temp[1] = {"fish//steak//carrot"}.Теперь мой код выглядит так:

for (var i = 0; i < temp.length ;i++)
{
window.data_arrays = Array(2);
window.data_arrays[i] = temp[i].split("//");
}

Я пытаюсь сделать data_arrays в двумерный массив ... так что для примера это будет похоже на temp[0][0] = "sky", temp[0][1] = "hi", temp[1][0] = "fish".

Однако код не работает.Может кто-нибудь помочь мне?Благодарю.(причина, по которой я назначаю его окну, заключается в том, что мне нужно получить доступ к этой переменной в другом файле позже)

Ответы [ 4 ]

2 голосов
/ 13 июля 2011

Если ваш массив temp правильный, вы должны инициализировать массив до цикла:

window.data_arrays = [];
for (var i = 0; i < temp.length; i++) {
     window.data_arrays[i] = temp[i].split("//");
}

В противном случае вы перезаписываете его на каждой итерации, и он будет содержать только значения последней итерации.

DEMO

1 голос
/ 13 июля 2011

определение массива искажено, остальное близко:

var temp = [];
temp.push("sky//hi//pi");           // temp[0]
temp.push("fish//steak//carrot");   // temp[1]

var final = [];
for( var i=0, tempLen=temp.length; i < tempLen; i++ ){
   final.push( temp[i].split("//"));
}
console.log(final);
1 голос
/ 13 июля 2011

В строке примера кода 3 (ниже) "window.data_arrays" перезаписывается на каждой итерации.

window.data_arrays = Array(2);

Перемещая оператор присваивания вне цикла. Следующий код работал для меня. (Я использовал плагин FireBug в Firefox)

var temp = ["sky//hi//pi","fish//steak//carrot" ];

var data_array = {};
for (var i = 0; i < temp.length ;i++)
{
   data_array[i] = temp[i].split("//");
}

console.log(data_array.length);
console.log(data_array[0][0]);
console.log(data_array[0][1]);
console.log(data_array[0][2]);
console.log(data_array[1][0]);
1 голос
/ 13 июля 2011

Вы были близки.

temp = []; 
temp[0] = "sky//hi//pi"; 
temp[1] = "fish//steak//carrot";

window.data_arrays = [];
for (var i = 0; i < temp.length ;i++) {
  window.data_arrays[i] = temp[i].split("//");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...