Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.09.2010, 17:57
Аватар для simple
Профессор
Отправить личное сообщение для simple Посмотреть профиль Найти все сообщения от simple
 
Регистрация: 23.09.2010
Сообщений: 247

Многомерный массив javascript
Нужна помощь, есть некий массив, например: a [1,2,3,4,5,6,7,8,9], нужно элементы этого массива залить в двухмерный массив, чтобы было так:
b[0]=[1,2,3]
b[1]=[4,5,6]
b[2]=[7,8,9]

и чтобы обращения к массиву было в духе b[0][1], выводит 2.
Ответить с цитированием
  #2 (permalink)  
Старый 29.09.2010, 18:03
Профессор
Отправить личное сообщение для exec Посмотреть профиль Найти все сообщения от exec
 
Регистрация: 21.01.2010
Сообщений: 1,022

<script type="text/javascript">
Array.prototype.to2x = function () {
	var temp = [];
	for ( var i = 0; i < this.length; i += 3 ) {
		temp.push(this.slice(i, i + 3));
	}
	return temp;
};

var t = [  0,1,2,3,4,5,6,7,8  ].to2x();
alert(  t[0] + '; ' +  t[1] + '; ' + t[2]  );
</script>
Ответить с цитированием
  #3 (permalink)  
Старый 29.09.2010, 18:15
Аватар для simple
Профессор
Отправить личное сообщение для simple Посмотреть профиль Найти все сообщения от simple
 
Регистрация: 23.09.2010
Сообщений: 247

Большое человеческое спасибо! а как сделать чтобы это было динамически, т.е предпологается что скрипт незнает точно какого размера будет первый массив?
Ответить с цитированием
  #4 (permalink)  
Старый 29.09.2010, 18:24
Ламер
Отправить личное сообщение для DooMer Посмотреть профиль Найти все сообщения от DooMer
 
Регистрация: 19.02.2010
Сообщений: 295

с помощью length получаешь длинну массива, а потом вспоминаешь математику
Ответить с цитированием
  #5 (permalink)  
Старый 29.09.2010, 18:29
Профессор
Отправить личное сообщение для exec Посмотреть профиль Найти все сообщения от exec
 
Регистрация: 21.01.2010
Сообщений: 1,022

simple, там и так массив любой длины разбивается на подмассивы по 3 элемента.
Ответить с цитированием
  #6 (permalink)  
Старый 29.09.2010, 19:40
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Сообщение от simple
а как сделать чтобы это было динамически
Пожалуйста: метод возвращает квадратный двумерный массив.
Array.prototype.to2x = function(){ 
  var x = arguments[0] ? Math.ceil(Math.sqrt(this.length)) : Math.floor(Math.sqrt(this.length)), result = [];
  for( var i = 0; i < x; i++ ) result.push([]);
  for( var i = 0; i < x*x; i++ ){
    var a = i==0 ? 0 : Math.floor(i/x), 
    b = i==0 ? 0 : i%x;
    result[a][b] = this[i];
  } 
  return result;
};
var temp1 = [1, 2, 3, 4, 5].to2x();
alert(temp1[0]+'; '+temp1[1]);
var temp2 = [1, 2, 3, 4, 5].to2x(true);
alert(temp2[0]+'; '+temp2[1]+'; '+temp2[2]);
Ответить с цитированием
  #7 (permalink)  
Старый 29.09.2010, 20:25
Аватар для simple
Профессор
Отправить личное сообщение для simple Посмотреть профиль Найти все сообщения от simple
 
Регистрация: 23.09.2010
Сообщений: 247

Вобщем сделал по своему, в ассоциативный массив...
<script>
a=0;
var mas=[];
    y=[1000,1,123,2000,20,321,3000,33,455];
for(i=0;i<=y.length/3;i++){
mas[y[a]]=new Array(y[1+a],y[2+a]);
a=a+3;
}
</script>


Не могу найти инфу по сортировке и перебору по ключам как в PHP. В JS это возможна? Помогите пожалуйста, очень надо
Ответить с цитированием
  #8 (permalink)  
Старый 29.09.2010, 21:50
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Все что надо есть здесь
Ответить с цитированием
  #9 (permalink)  
Старый 30.09.2010, 10:43
Аватар для simple
Профессор
Отправить личное сообщение для simple Посмотреть профиль Найти все сообщения от simple
 
Регистрация: 23.09.2010
Сообщений: 247

Всем спасибо за помощь, появился еще один вопрос по поводу массивов...
for(i=0;i<mas.length;i++){
....
pr['Moscow']+=mas[i];
....
alert('Moscow');

Задумано цикле из массива mas[] создать ассоциативный массив pr[], но алерт пишет NaN... в чем ошибка?

Последний раз редактировалось simple, 30.09.2010 в 10:54.
Ответить с цитированием
  #10 (permalink)  
Старый 30.09.2010, 11:01
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Сообщение от simple
ассоциативный массив pr[]
Я надеюсь pr - объект, а не массив?!
Я так понял хотелось чего-то тип того:
var mas=[1,2,3], pr={};
pr.Moscow = mas;
alert(pr.Moscow)
???
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Москва, ищу JavaScript программиста отлично знающего ExtJS, от 10 USD / час. maximgb Работа 3 03.08.2010 14:34
Как создать многомерный массив FRIE Общие вопросы Javascript 29 02.06.2010 19:14
Подскажите, как вернуть js-скрипт массив Polkan AJAX и COMET 18 30.04.2010 23:30
Многомерный массив в json Л_Денис Общие вопросы Javascript 1 21.04.2010 21:43
JavaScript на Яндекс.Фотки - почему тормозит браузеры? ZavFirefox Javascript под браузер 23 27.09.2009 19:24