Показать сообщение отдельно
Старый 28.07.2006, 15:47
xintrea вне форума Посмотреть профиль Отправить личное сообщение для xintrea Посетить домашнюю страницу xintrea Найти все сообщения от xintrea
  № 6  
Ответить с цитированием
xintrea
 
Аватар для xintrea

Регистрация: Mar 2002
Адрес: https://webhamster.ru
Сообщений: 107
Цитата:
Сообщение от iNils
Код:
arrayN = function (arrayName, arrayD, arg) {
	if (!this[arrayName]) {
		this[arrayName] = [];
	}
	var arrayTemp = this[arrayName];
	var len = arrayD.length - 1;
	for (var i = 0; i < len; i++) {
		if (!arrayTemp[arrayD[i]]) {
			arrayTemp[arrayD[i]] = [null];
		}
		arrayTemp = arrayTemp[arrayD[i]];
	}
	arrayTemp[arrayD[len]] = arg;
};
arrayN ('c', [1, 1], 50);
arrayN ('a', [5, 2, 3, 6], 100);
arrayN ('a', [5, 2, 3, 7], 200);
trace (c[1][1]);
trace (a[5][2][3][6]);
trace (a[5][2][3][7]);
А вот еще вопрос. Не могу сообразить, как изменить вашу функцию так, чтобы она создавала элементы глобальных массивов...

Вызов в стиле arrayN ('_global.c', [1, 1], 50); при проверке содержимого как trace (c[1][1]); дает undefined.

А при при попытке сделать так

Код:
_global.c=new Array();
arrayN ('c', [1, 1], 50);
получается так что глобальными создаются элементы основного массива, а элементы второй размерности - не глобальные.
__________________
Со всяческими пожеланиями, Xintrea.
https://webhamster.ru