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

stp008 27.10.2012 19:59

Многомерный массив
 
Здравствуйте. Мне нужно заполнить двумерный массив числами. Первый элемент это число от 0 до 50, а второй заполняется по формуле. Для простоты пускай первый будет равен i, а второй i+1. Формат, если что, нужен такой:data2 = [[0, 1], [1, 2], [2, 3], [3, 4],[4, 5],[5,6]]. Я просто строю график с помощью библиотеки flot,а синтаксис толком и не нашел для заполнения двумерного массива. Сделал так:
var d = [];
for (i=0; i<50; i++) {
d[i] = i;
for (j=0; j<50; j++){

d[i][j] = i+1;
};
};
    alert(d[1][2]);
.
Но выводит undefined. Подскажите, пожалуйста, как это нормально реализовать.

Nekromancer 27.10.2012 20:06

d[i] = []

a_l 27.10.2012 20:40

var d = [];
for (i=0; i<50; i++) {
d[i] = [i, i+1];
};

Nekromancer 27.10.2012 23:59

a_l,
push, не?

stp008 28.10.2012 01:49

Спасибо за ответы, разобрался)

a_l 28.10.2012 11:10

Nekromancer, гугл советует напрямую присваивать значения массиву там, где можно обойтись без push. Это быстрее.

Nekromancer 28.10.2012 15:03

Вот кот людей обманывает. Единтственный браузер, в котором это верно, это Opera, которую Google не поддерживает. Возможно и ИЕ, но я не верю в это (что там быстрее).
Что на самом деле быстрее, так это преалокация и последующее присвоение -- это быстрее во всех браузерах. В остальном, push быстрее так как это линейная операция, что то там.
Вот тест: http://jsperf.com/push-vs-assing-vs-...loc-and-assing
Даже в V8 всё не так, как написал Google. Только в SpiderMonkey от Mozilla бывают перепады настроения. То push быстрее, то pre-alloc, то при каких то условиях, на десятый раз теста и assing может быть быстрее.


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