Многомерный массив 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. |
<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> |
Большое человеческое спасибо! а как сделать чтобы это было динамически, т.е предпологается что скрипт незнает точно какого размера будет первый массив?
|
с помощью length получаешь длинну массива, а потом вспоминаешь математику
|
simple, там и так массив любой длины разбивается на подмассивы по 3 элемента.
|
Цитата:
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]); |
Вобщем сделал по своему, в ассоциативный массив...
<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 это возможна? Помогите пожалуйста, очень надо :help: |
Все что надо есть здесь
|
Всем спасибо за помощь, появился еще один вопрос по поводу массивов...
for(i=0;i<mas.length;i++){ .... pr['Moscow']+=mas[i]; .... alert('Moscow'); Задумано цикле из массива mas[] создать ассоциативный массив pr[], но алерт пишет NaN... в чем ошибка? :-? |
Цитата:
Я так понял хотелось чего-то тип того: var mas=[1,2,3], pr={}; pr.Moscow = mas; alert(pr.Moscow)??? |
Часовой пояс GMT +3, время: 15:52. |