Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Многомерный ассоциативный массив (https://javascript.ru/forum/misc/23411-mnogomernyjj-associativnyjj-massiv.html)

trikadin 23.11.2011 22:13

рони, ваш "вариант" ушёл в бесконечный цикл и повесил ff. Проверять надо же...

рони 23.11.2011 22:25

trikadin,
Поверьте ещё раз ... если интересно )))

trikadin 23.11.2011 22:43

рони, нормально. Что-то поменяли?

ksa 23.11.2011 22:59

Цитата:

Сообщение от рони
Поверьте ещё раз ... если интересно

А я нажал в Опере и ничего не дождался... :(

P.S.
Правда и мой вариант так же не запустился... :( Хотя на работе все показывало нормально.

melky 23.11.2011 23:02

Цитата:

Сообщение от рони (Сообщение 138634)
return function (f, a) {
var c, a = a || 0, d;
!b[a] && (b[a] = []);
for (d in f) if (b[a].push(d) && (c = f[d])&& typeof c=='object') {
var g = {}, e;
for (e in c) g[e] = c[e];

:-E вы всегда с такими именами переменных (a,b,c,d,e,f..) и такой кашей пишете? (я о использовании && вместо if(){} и т.д.)

рони 23.11.2011 23:21

ksa,
В опере тоже всё должно работать ...
melky,
Я по разному пишу ... но чаще так )))

ksa 24.11.2011 09:18

Цитата:

Сообщение от рони
В опере тоже всё должно работать ...

На работе таки работает. :yes:
Вот только что за нули в самой последней строке? Автор такого вроде не заказывал... :D

cbone 24.11.2011 12:53

Цитата:

Сообщение от Aetae (Сообщение 138524)
Ив вообще, скжите для чего вы хотите это использовать и мы предложим вам подходящие варианты.

Использовать хочу в интернет магазине. Продукция сложная и имеет много модификаций.
Вот пример на сайте http://en-i.ru/product-catalog/energ...ies/Pulse_BPI/ (форму можно посмотреть нажав на кнопку "Подобрать Импульсные БПИ)"
Тут как раз описаны БПИ. Но некоторая продукция имеет более сложную конфигурацию и кол-во модификаций может достигать 2000 с лишним. Для этого я хочу избавиться от нынешней формы подбора продукции и сделать так, чтобы пользователь просто выбрал нужную ему конфигурацию и нажал кнопку "Купить". При этом, выбирая определённые характеристики товара должна проходить проверка остальных характеристик и некоторые из них должны становиться некликабельными (именно те которые несовместимы с уже выбранными).
Пример того, что я хочу получить можно посмотреть здесь: http://quto.ru/BMW/1series/E81_E82_E87_E88/hatchback3d/ Там при подборе комплектации автомобиля (например при выборе объема двигателя 3л.) затемняются лишние характеристики и дизельный двигатель уже нельзя выбрать. Что то вроде этого я и хочу сделать для своего сайта.

cbone 24.11.2011 13:04

Цитата:

Сообщение от ksa (Сообщение 138553)
Если я таки правильно понял проблемку - такой вот вариант например...

var config = {
	"БПИ": {
		"30": {
			"12": [ "2,5" ],
			"24": [ "1,25" ],
			"48": [ "0,65" ]
		},
		"60": {
			"12": [ "5,0" ],
			"24": [ "2,5" ],
			"36": [ "1,5" ],
			"48": [ "1,25" ]
		},
		"125": {
			"12": [ "10" ],
			"24": [ "5" ],
			"48": [ "2,5" ]
		},
		"250": {
			"12": [ "20,0" ],
			"24": [ "10,0" ],
			"48": [ "5,0" ]
		}
	}
};
var a=[],b,c;
var i,j,k;
for(i in config) {
	a[a.length]=new Array(i);
	b=[];
	c=[];
	for( j in config[i]) {
		b[b.length]=j;
		for( k in config[i][j]) {
			c[c.length]=k;
		};
	};
	a[a.length]=b;
	a[a.length]=c;
};
for (var i=0; i<a.length; i++) {
	alert('a['+i+'] = '+a[i]);
}

Да, тут близко к тому что я хотел, но у массива config вложенность может быть ещё больше, например вот такой:
var config = {
	"БПИ": {
		"30": {
			"12": {
				"2,5": { 
					"да": [ "1,2", "3" ], 
					"нет": [ "1" ] 
				}
				},
			"24": [ "1,25" ],
			"48": [ "0,65" ]
		},
		"60": {
			"12": [ "5,0" ],
			"24": [ "2,5" ],
			"36": [ "1,5" ],
			"48": [ "1,25" ]
		},
		"125": {
			"12": [ "10" ],
			"24": [ "5" ],
			"48": [ "2,5" ]
		},
		"250": {
			"12": [ "20,0" ],
			"24": [ "10,0" ],
			"48": [ "5,0" ]
		}
	}
};

ksa 24.11.2011 13:07

Цитата:

Сообщение от cbone
но у массива config вложенность может быть ещё больше,

Тогда есть два путя... :D
3. Добавлять циклов и временных массивов до нужного количества уровней...
2. Таки делать рекурсию.


Часовой пояс GMT +3, время: 11:57.