| 
	| 
	
	| 
		
	| 
			
			 
			
				11.04.2014, 23:36
			
			
			
		 |  
	| 
		
			|  | Аспирант       |  | 
					Регистрация: 13.08.2012 
						Сообщений: 38
					 
		
 |  |  
	| 
				заполнение двумерного массива
			 всем здравствуйте! 
подскажите, как правильно описать двумерный массив одну строку с начальным индексом не нулевым 
как в PHP
 
$mass =  array(1=>array(1,2), 2=>array(3,6), 3=>array(7,10));
 
т.е. получается что в таком массиве индекс первого элемента будет единица
 
как сделать такое же в JS?
 
P.S. пробовал написать вот так
 
$mass =  [1=>[1,2], 2=>[3,6], 3=>[7,10]];
 
ошибка
 
$mass =  [1=[1,2], 2=[3,6], 3=[7,10]];
 
ошибка
 
$mass =  [1:[1,2], 2:[3,6], 3:[7,10]];
 
ошибка			 Последний раз редактировалось woojin, 11.04.2014 в 23:41.
 |  |  
	| 
		
	| 
			
			 
			
				12.04.2014, 04:10
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 15.03.2014 
						Сообщений: 561
					 
		
 |  |  
	| Как вариант можно пропустить первые элементы при объявлении:var arr = [,[1,2],[3,6],[7,10]]
 Правда свойство length массива всё равно считается по последнему индексу. Его конечно можно переопределить, но как-то это неправильно.
 А точно массив нужен? Может лучше использовать обычный объект с числовыми свойствами?
 Впрочем ничто не мешает написать функцию, которая будет генерировать массив так как надо.
 			 Последний раз редактировалось jsnb, 12.04.2014 в 04:19.
 |  |  
	| 
		
	| 
			
			 
			
				12.04.2014, 04:10
			
			
			
		 |  
	| 
		
			|  | Тлен       |  | 
					Регистрация: 02.01.2010 
						Сообщений: 6,601
					 
		
 |  |  
	| Может потратить всё-таки полчасика и почитать про элементарнейший базовый синтаксис языка, вместо того чтобы гадать на кофейной гуще? 
				__________________ 29375, 35
 |  |  
	| 
		
	| 
			
			 
			
				12.04.2014, 08:25
			
			
			
		 |  
	| 
		
			|  | Аспирант       |  | 
					Регистрация: 13.08.2012 
						Сообщений: 38
					 
		
 |  |  
	| 
	
 
	| Сообщение от jsnb   |  
	| var arr = [,[1,2],[3,6],[7,10]] |  
	
 а при таком варианте первый элемент хоть и пустым будет, но всё же будет нулевым?
 
	
 
	| Сообщение от jsnb   |  
	| А точно массив нужен? |  
	
 да нужен массив 
он будет формироваться в PHP? а затем "распечатываться" в HTML
 
	
 
	| Сообщение от Aetae   |  
	| Может потратить всё-таки полчасика и почитать про элементарнейший базовый синтаксис языка, вместо того чтобы гадать на кофейной гуще? |  
	
 да не вопрос, но наверное у меня глаза на  жоп* затылке, но я не нашёл что либо путного |  |  
	| 
		
	| 
			
			 
			
				12.04.2014, 08:38
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 15.03.2014 
						Сообщений: 561
					 
		
 |  |  
	| 
	
 
	| Сообщение от woojin   |  
	| а при таком варианте первый элемент хоть и пустым будет, но всё же будет нулевым? |  
	
 В forEach он участовать не будет, при прямом обращении по индексу 0 выдаст undefined, как и при обращении к любому несуществующему элементу массива. В свойство length записывается максимальный индекс, поэтому да, тут он будет учитываться.
 
	
 
	| Сообщение от woojin   |  
	| он будет формироваться в PHP? а затем "распечатываться" в HTML |  
	
 А почему нельзя подправить индексы при формировании? И в чем смысл именно такой нумерации? Если идет цикл по конкретным индексам, то какая разница что лежит в остальных частях массива? И вообще что с этим массив на клиенте будет то происходить? Нафиг оно надо?
 
В общем прямого аналога такого создания массива, как в PHP в JS нет.			 Последний раз редактировалось jsnb, 12.04.2014 в 08:44.
 |  |  
	| 
		
	| 
			
			 
			
				12.04.2014, 11:40
			
			
			
		 |  
	| 
		
			
			| Особый гость     |  | 
					Регистрация: 02.04.2010 
						Сообщений: 4,260
					 
		
 |  |  
	| 
$mass =  array(1=>array(1,2), 2=>array(3,6), 3=>array(7,10));
 
var array = [];
array[1] = [1, 2];
array[2] = [3, 6];
array[3] = [7, 10];
var filtered = array.filter(function (value) {
   return value;
});
array.length; // 4
filtered.length; // 3
Правда непонятно зачем вам нужен этот геморой.
 
	
 
	| Сообщение от jsnb |  
	| В общем прямого аналога такого создания массива, как в PHP в JS нет. |  
	
 
var map = {
   1: [1, 2],
   2: [3, 6],
   3: [7, 10]
};
Object.keys(map).length; // 3
			 Последний раз редактировалось monolithed, 12.04.2014 в 11:44.
 |  |  
	| 
		
	| 
			
			 
			
				12.04.2014, 12:08
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 16.03.2010 
						Сообщений: 1,618
					 
		
 |  |  
	| 
	
 
	| Сообщение от woojin |  
	| при таком варианте первый элемент хоть и пустым будет, но всё же будет нулевым? |  
	
 Нет. Свойства с именем "0" у массива не будет:
 
alert( 0 in [, 1, 2] );
 
Но если обратиться к этому свойству, вернет undefined . Потому что несуществующее свойство возвращает undefined :
 
alert( []['Да пох ваще, хоть к чему обращайся'] );
 |  |  
	| 
		
	| 
			
			 
			
				12.04.2014, 12:18
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 15.03.2014 
						Сообщений: 561
					 
		
 |  |  
	| 
	
 
	| Сообщение от monolithed   |  
	| 
var map = {
   1: [1, 2],
   2: [3, 6],
   3: [7, 10]
};
Object.keys(map).length; // 3
 |  
	
 Так он говорит, что ему объект не подходит. Интересно почему... |  |  
	| 
		
	| 
			
			 
			
				12.04.2014, 12:20
			
			
			
		 |  
	| 
		
			
			| Особый гость     |  | 
					Регистрация: 02.04.2010 
						Сообщений: 4,260
					 
		
 |  |  
	| 
	
 
	| Сообщение от Sweet |  
	| Потому что несуществующее свойство возвращает undefined |  
	
 А PHP вернет пустую строку    
	
 
	| Сообщение от jsnb |  
	| Так он говорит, что ему объект не подходит. Интересно почему... |  
	
 Наверно потому что он мыслит иначе   
Хотя прогресс у них наблюдается.
 
$object = (object) 'foo';
echo $object->scalar;  // 'foo'
print_r($object); // stdClass Object ( [scalar] => foo )
$object = (object) ['1' => 'foo', '2' => 'bar'];
print_r($object); // stdClass Object ( [1] => foo, [2] => bar )
			 Последний раз редактировалось monolithed, 12.04.2014 в 12:31.
 |  |  
	| 
		
	| 
			
			 
			
				12.04.2014, 22:04
			
			
			
		 |  
	| 
		
			|  | Аспирант       |  | 
					Регистрация: 13.08.2012 
						Сообщений: 38
					 
		
 |  |  
	| 
	
 
	| Сообщение от jsnb   |  
	| И вообще что с этим массив на клиенте будет то происходить? Нафиг оно надо? |  
	
 есть функция которая должна или выдавать индекс массива проверяя лежит ли переменная между значениями внутреннего подмассива; или по индексу проверять и выдавать значение ближайшее к верхней или нижней границе подмассива
 
jQuery(function($) {
                var price_quantity = [, [1, 2], [3, 6], [7, 10]];
                function check_quantity(variable) {
                    var pq = price_quantity;
                    if (variable.hasClass("jsPriceIndex")) {
                        var val = parseInt(variable.val());
                        var qua = parseInt(jQuery('.jsQuantity').val(), 10);
                            var qp = pq[val];
                            if (qua < qp[0]) {
                                qua = qp[0];
                            } else if (qua > qp[1]) {
                                qua = qp[1];
                            } else {}
                        jQuery('.jsQuantity').val(qua);
                    } else
                    if (variable.hasClass("jsQuantity")) {
                        var qua = parseInt(variable.val());
                        var val = 0;
                        for (var i = 1; i <= pq.length-1; i++) {
                            var qp = pq[i];
                            if (qua >= qp[0] && qua <= qp[1]) {
                                val = i;
                            }
                        }
                        jQuery(".jsPriceIndex[value='" + val + "']").prop('checked', true);
                    }
                }
            });
	
 
	| Сообщение от monolithed   |  
	| Правда непонятно зачем вам нужен этот геморой. |  
	
 мне удобнее вписать в HTML одну строку, по этому и хотел сделать одной строкой!
 
	
 
	| Сообщение от Sweet   |  
	| Нет. Свойства с именем "0" у массива не будет: 
 
alert( 0 in [, 1, 2] );
 |  
	
 отлично!!!
 
	
 
	| Сообщение от jsnb   |  
	| Так он говорит, что ему объект не подходит. Интересно почему... |  
	
 я выше привёл функцию которая будет работать с данным массивом
			
			
	
			
			
			
			
			
				  |  |  |  |