Уроки JavaScript | Урок №10 - Многомерные массивы
Вставка
- Опубліковано 21 жов 2024
- В этом видеоуроке мы продолжим тему массивов. В этом уроке изучим многомерные массивы, а именно двумерный массивы. Что это такое и как с ними работать смотрите в этом видеоуроке.
✔ Основной сайт: itproger.com/
✔ -------------
Группа Вк - prog_life
Группа FaceBook - goo.gl/XW0aaP
Я в Google+ - goo.gl/Tqt9W0
Страничка Twitter - / goshadudar
Страничка Вк - codi999
✔ Начните зарабатывать на UA-cam - join.air.io/mon...
✔ Видео по заработку на UA-cam - goo.gl/RLPXV8
Помощь в развитии канала.
Яндекс Деньги: 410014343706921
Кошельки WebMoney:
Доллар: Z331064341236
Гривна: U386388718252
Рубль: R214610220703
Опять же хотелось бы указать на несколько ошибок:
1 Как и в прошлом уроке - массивы созданы, как конструкторы;
2 4:39 обращение arr_1.length, была бы правильна если бы была arr_1.length - 1, т.к. длина массива считается с 1, а индекс с 0, поэтому последний элемент в массиве arr_1 у вас 5-ый по счёту, но 4-ый по индексу, по этому надо писать длина минус 1, для последнего, минус 2 для предпоследнего и т.д. если надо отбирать элементы массива с конца.
3 Я не понимаю, почему массивы создаются через цикл, это надо довольно редко, в основном создаются в ручную например var arr = [12, [3, 4, 5], "jhgdsjh"];
это двухмерный массив, где второй элемент(с индексом 1) вложеный массив или например var arr = [12, ["фигня", [false, true], "здорово"], "Вася"]; , трёхмерный массив, где 12 и Вася элементы первого уровня, фигня и здорово - второго, а false и true третьего.
если указывать отсчёт длины массива (-1) , то последнее значение во вложенном массиве будет undefined. Проблема решается изменением условия i
Стоян стефанов тоже пишет в своей книге не использовать конструкторы массивов. У них побочные эффекты и это старая методика создания массивов, желательно использовать литералы.
Спасибо!
Продолжай дальше, не слушай тех, кто сам ничего полезного для других не сделал.
Спасибо за урок, делай пожалуйста еще. У тебя своими словами получается объяснять не обычно и в этом вся прелесть, твои видео + видео из других каналов, в итоге много разных методов объяснений и постепенно врубаешься. Спасибо, продолжай, другие вообще ничего не делают ))) так что нормально все )
Clee! Это ты? Когда твой новый баннер?)
Умеют же некоторые простые вещи так усложнять ))
Да слишком запутанно у него все
Те, кто шарят в других языках разберутся на изи
Дуже зручні, зрозумілі і легко сприймаються уроки, приємно дивитись і пророблювати в себе
Спасибо за уроки ! Да есть не большие пробелы,но грех людям жаловаться , за такое короткое время изложить доступно информацию.Молодец.
Гоша респект, всегда нравились твои курсы
Ребята из комментариев, я тоже могу предоставить вам курсы по разработке на HTML, CSS, JS, Angular, Node, Meteora.
Ютуб банит ссылки поэтому зайдите ко мне на канал
Спасибо за внимание!
Включите JS или сайт не будет работать в вашем браузере
var arr_1 = new Array(); // Создаём обычный массив_1
var arr_2 = new Array(); // Создаём обычный массив_2
var arr_3 = new Array(); // Создаём обычный массив_3
for(var i = 0; i < 5; i++) arr_1[i] = i; // В цикле задаём, что i = 0, i будет до 5, с каждым разом будет увел. на 1 и задаём в arr i и указываем что будет равнятся i
for(var i = 0; i < 10; i++) arr_2[i] = i; // В цикле задаём, что i = 0, i будет до 10, с каждым разом будет увел. на 1 и задаём в arr i и указываем что будет равнятся i
for(var i = 0; i < 15; i++) arr_3[i] = i; // В цикле задаём, что i = 0, i будет до 15, с каждым разом будет увел. на 1 и задаём в arr i и указываем что будет равнятся i
var arr = new Array(arr_1, arr_2, arr_3); // Создаём многомерный массив, вписывая в него обычные массивы
// document.write(arr[0] [4]);
for(var x = 0; x < arr.length; x++){ // Создаём цикл, в котором x = 0, x будет идти до того, значение которого указано заранее, с каждым разом увеличиваем на 1
for(var j = 0; j < arr[x].length; j++){ //Создаём цикл, в котором j = 0; j не больше массива x, с каждым разом будет увеличиваться на 1
document.write(arr[x][j] + " "); // Выводим x и j, а в цифрах будут пробелы
}
document.write(""); // Каждый массив будет с новой строчки
}
MORFOOS
@@ДаняЛенц и зачем ты это написал???
спасибо
ничего не понял, но очень интересно!
Жиза
Если кто не может что-то понять-пересматривайте видео по нескольку раз и пишите свой код. Тренируйтесь
В js document.write(arr[0][arr_1.lenght]) такое можно сделать, только чуток не так:
document.write(arr[0][arr_1.lenght-1]) - arr_1.lenght-1(минус 1) нужно так как элементов всегда в любом массиве на 1 больше чем индексов(элементы начинаются с 1 2 3 4 5, а индексы 0 1 2 3 4)
И не очень понятно объяснил с двойным фо , что за чем исполняется, надеюсь дальше не подведешь.
Гоша, спасибо за решение, я столько долбался над этой задачей. Затык был на arr[x]. Не знал как обратится к вложенному массиву.
почему не было сказано про другие способы создания массивов:
var arr = [];
Про new Object() тоже стоило упомянуть. Почему не рассказали про асоциативный массив?
ты ебу дал видосу на момент твоего коммента 4 года было все поменялось 10 раз
Конечно я не профессионал, но на 7:00 минуте, вы создали двойной цикл, чтобы вывести двумерный массив, а можно было сделать проще
var arr = new Array(arr_1, arr_2, arr_3);
for (var i = 0; i < arr.length; i++) {
document.write(arr[i] + "");
}
Вот читаю комментарии... Действительно, Гоша, нужно было объяснить, что каждую итерацию внешнего цикла выполняются все итерации внутреннего.
Спасибо за урок!)) Как всегда, здорово объясняете, все просто и понятно
Дякую за урок)
Спасибо за урок. Там arr.length работает, просто надо было отнять 1. Ведь длина массива в одну единицу больше чем номер последнего элемента.
var arr_1 = new Array();// создаем маленькие массивы
var arr_2 = new Array();
var arr_3 = new Array();
for(var i = 0;i < 5; i++) arr_1[i] = i;
for(var i = 0;i < 10; i++) arr_2[i] = i;
for(var i = 0;i < 15; i++) arr_3[i] = i;
var arr = new Array(arr_1, arr_2, arr_3);// создаём большой двумерный массив
/*document.write(arr[0] [4]);// сначала обращаемся к arr массиву(к нулевому элементу), потом к элементу внутри маленького массива*/
for(x = 0; x < arr.length; x++){// тут меняем маленькие массивы для проверки их элементов в J
for(j = 0; j < arr[x].length; j++) {// перебирает элементы маленьких массивов... x отвечает за маленький массив, j-за элементы внутри него
document.write(arr[x][j] + " ");
}
document.write("")
}
спасибо за то что вы написали код)
По моему такой код будет правильнее,что-бы не путаться в 2 циклах,возможно там есть ошибки,но у меня работало,а так урок понравился,за исключением того,что всё таки можно было узнать длину. var arr_1=new Array();
var arr_2=new Array();
var arr_3=new Array();
for(var i=0;i
4:57 Вы говорите, что в JS такого делать нельзя, но это не так, просто Вы хотите взять шестой по сути елемент с индексом 5 (потому как длина первого массива 5), которого не существует, но если написать там document.write(arr[0][arr_1.length - 1]); то все очень даже сработает.
И да, спасибо за уроки!)
Кстати можно не усложнять все и писать var arr = [1,2,3,4]; вместо var arr = new Array (1,2,3,4);
Сразу видно, что Гоша редко использует двумерный массив. И правда, сложно для начинающих, но со временем привыкните! :)
длину вложенного массива надо было выводить через document.write(arr[0].length) т.к. arr[0] - это уже обращение к вложенному массиву дальше просто узнаете его длину. Вы использовали это когда узнавали его длину во вложенном цикле for
Ужасно объяснил про двойной цикл...так и хочется дислайк влупить, но ладно уж
Почему перестал записывать видео в расширении 720?(
Не в расширении, а в РАЗРЕШЕНИИ!! Это вообще разные вещи! Расширение есть у файла!
Вообще лучше всего говорить качество:0
Больше памяти берет и отнимет фпс НАВЕРНОЕ (но текст не прочитать)
ты запутал людей. Вот так будет проще сделать, чтобы они поняли. var arr = new Array(var array1 = new Array(1,2,3,4,5), var array2 = new Array(6,7,8,9,10));
Извините , я немного не понял , а почему вы сказали что это двухмерный массив?Почему arr_1 не массив?
Нет, почему же? arr1 это массив, а также один из элементов двумерного массива arr.
видео супер, только 720 было б лучше для глаз!
Почему ты говориш коментируйте видео ставте лайки а на вопросы не отвечаеш?
1:30 создавать то конечно их можно до бесконечности, но вот считывать потом.... Это главная проблема. Чем больше многомерность массива, тем выше сложность алгоритма считывания, и в определённый момент она (сложность алгоритма) может достичь таких значений, при которых ни один комп не справиться (каким бы современным он небыл). Вот это, мне кажется, важно понимать тем, кто учит языки программирования - старайтесь избегать многомерные массивы, так как они требуют слишком много ресурсов на их прочтение.
P.S. тут немножно лишнего времени на обработку, там немножно - в итоге это суммируется и ваша программа настолько медленная, что ни у одного пользователя не хватает нервов дождаться когда она загрузиться (выполниться) полностью.
Гошан, ты ж сам учил:
var arr = new Array(arr_1, arr_2, arr_3);
document.write(arr[1].length);
Реально,чего то сам удивился)
так и не понял почему при document.write(arr[0][4]) и document.write(arr[0][1]) на пятой минуте на страничке отображается 4 и 1, а не 3 и 0 если отсчет идет от 0
У меня не работают двумерные массивы я все правильно переписал но они просто не запускаются в чем проблема ?
Не могу пересчитать все элементы в последних двух циклах for. В чём проблема?
var arr_1 = Array();
var arr_2 = Array();
var arr_3 = Array();for(var i = 0; i < 5; i ++)
arr_1[i] = i;for(var i = 0; i < 10; i ++)
arr_2[i] = i;for(var i =0; i < 15; i ++)
arr_3[i] = i;var arr = Array(arr_1, arr_2, arr_3);
document .write("" + "" + arr[2][11]);for(var x = 0; x < arr.lenght; x ++){
for(var j = 0; j < arr[x].lenght; j ++){
document .write("" + "" + arr[x][j]);
}
document .write(""):
}
length а не lenght. И в предпоследней строке ты поставил двоеточие вместо точки с запятой.
последнее вообще не понял, как что излагается, сорен конечно но можешь делать чуть больше конкретики , так как я вообще не понял как там мы обращаемся к arr_3 ты говорил вот x обращается к arr_1 а j к arr_2 ну или возможно чего то не понял, мы же учимся а не спешим делай выводов больше , тип вот эта отсюда а эта отсюда, мне было очень сложно понимать и приходилось просто самому додумывать что и как.
Да уж, чем дальше, тем хуже объясняешь. Постарайся лучше излагать свои мысли.
+Jenas Sarandas да, объяснил он хреновенько))) но впринципе и так все логично.
+Michael Morrison при чем тут я, смотрел до него видеоуроки другого чела по этой же теме, там все четко и логично, тут же тоже все понятно но объяснено все чрез жопу.
+Michael Morrison да фига ли тут учить то, просто написал что он объясняет коряво, есть видеоуроки лучше
я вот С/C++ учил и мне понятно. но если бы я первый раз видел эти массивы. то нифига бы не понял. но я думаю вообще лучше сначала базу надо учить С. а потом уже дальше соваться
С++ как бы тоже ООП
когда этому всему будет логическое применение?
можно вместо этого двойного цыкла написать " document.write("" + arr); "
Подскажите почему не работает? Вроде все так, без ошибок. Но не работает
var arr_1 = new Array();
var arr_2 = new Array();
var arr_3 = new Array();
for(var i = 0; i < 5; i++) arr_1(i) = i;
for(var i = 0; i < 10; i++) arr_2(i) = i;
for(var i = 0; i < 15; i++) arr_3(i) = i;
var arr = new Array(arr_1, arr_2, arr_3);
document.write(arr[0][4]);
все разобрался. в 3й строчке нужно квадратные скобочки ставить
У меня ничего не выводит... написание сверил, результата нет
Ну кто не знает как убить Кащейя бессмертного , тот многомерные массивы не поймёт.
Пожалуйста, перед тем, как записывать видео-урок, составляй не только план урока, но и прорабатывай текст, который будет звучать на видео. Начиная с седьмой минуты слушать было попросту невозможно. Если до того момента казалось, что в целом информация усвоена и довольно проста, то после неуверенности самого автора в объяснении, собственная уверенность исчезает вместе с усвоенной информацией. Так же, следуя указаниям в видео, не очень помогает совершать те же ошибки, что и автор, а потом наблюдать, как он какое-то время сам не может понять, почему же оно не работает. И такая беда практически со всеми предыдущими видео в курсе. Я понимаю, что данное видео было создано пять лет назад, и на данный момент в плане преподавательства дела должны обстоять на порядок качественнее, но на этом канале нет альтернативных уроков по javascript, которые было бы приятно слушать. Как на счёт того, что бы перезаписать данный курс? Сделать его более качественным, как в плане информации в видео, так и в плане озвучки.
Знаю С++, уже приготовился к харде, а тут бац, и почти такой же синтаксис)
Понятно.
Спасибо, но у меня появился вопрос: "Массив, в котором будут и простые элементы, и другие массивы, будет считаться многомерным?"
А почему нет то?)
как бы вывести эти массивы не строчно, а столбиками?
Может кто-то объяснить почему двумерный массив, если там 3?
Автор, создает массив arr с 3-мя элементами (переменными arr_1, arr_2, arr_3), а в каждом из них, имеется различное число элементов (5, 10, 15). Поэтому обращаясь к массиву arr, он запрашивает только два параметра, первый это фактически какой массив, а второй это какой элемент выбранного массива. Я тоже с не первого раза понял.
на 2 минуте 30 секунде, у меня не выявляет 4 не понимаю почему...
var arr_1 = now Array();
var arr_2 = now Array();
var arr_3 = now Array();
for(var i = 0; i < 5; i++) arr_1[i] = i;
for(var i = 0; i < 10; i++) arr_2[i] = i;
for(var i = 0; i < 15; i++) arr_3[i] = i;
var arr = now Array(arr_1, arr_2, arr_3);
document.write(arr[0][4] );
+Павел Мешков 'new'
лично мне ничего не понятно. А если смотреть еще дом задания то такое впечатление что они вообще видео не соответствуют. Пошел пробовать учить на другой канал или сайт
А по моему все понятно, даже вполне
m1 = 1000;
m2 = 1000;
for(var i = 0; i < m1; i++) {
mass[i] = []
for(var j = 0; j < m2; j++){
mass[i][j] = j;
document.write(mass[i][j]);
}
document.write("");
}
а вот как создать и вывести матрицу 1000 на 1000 не обьявляя 1000 одномерных массивов построчно :)
document.write(arr[0][arr_1.length-1]); и все сработает
я не люблю javascript за то что
alert(0.2 + 0.1); //Выводит 0.30000000000000004
или
alert( 9999999999999999 ); //Выводит 10000000000000000
не проще объявлять их так
var arr [ ] [ ] [ ];
и не парится.
весь код напиши, пожалуйста
спс за урок! ЕСЛИ КОМУ НЕ ПОНЯТНО КНИГИ ЧИТАЙТЕ ! А НЕ ПИШИТЕ В КОМЕНТАХ ХУ***
+Daniil Komarov я для этого видео смотрю для начинающих, при чем тут книги, херню сказал
Какую книгу посоветуешь?
Он имел ввиду развиваться , т.е. читать в общем лит-ру, а неконкретно по js
как раз книги по js он и имел ввиду
Ну ты их явно не читаешь, судя по пунктуационным ошибкам ^_^
точнее на 3 минуте 30 секунде
чет последнее не очень понятно,я бы даже сказал сложно
Качество видосиков: =BRUH=
Спасибо вам за эти уроки! Долгой жизни и здоровья вам))
понял ошибку, не так написал значение
капец он туго рассказывает
если коротко, то вот вся суть данного урока
repl.it/@GUMPERT/SpitefulEducatedTags-1
7:00 Чего... Ни фига не понятно с этого места
нещадный язык... одна пропущенная точка с запятой, и писец... ничего не работает.
кто не понял когда он про индекс говорил www.google.com/search?q=%D0%B8%D0%BD%D0%B4%D0%B5%D0%BA%D1%81+%D0%B2+%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5&source=lnms&tbm=isch&sa=X&ved=0ahUKEwjcn5Ke78XgAhVvk4sKHbsjDcMQ_AUIDigB&biw=1536&bih=732#imgrc=YEHns16HvV5lKM:
зачем бл многомерные масивы для web
кто так объявляет массивы?
не проще так?: var x = [ [1] [2] [3] ]
и не парится.
var arr = [1,2,3,4];
Совет, тебе Георгий для развития канала или улучшения качества контента. Не принимай как оскорбление!
Научись сначала мысли излагать ясно или если с этим тяжело, пиши текст перед съемкой видео, очень трудно воспринимать видео, ломаешь мозг тупяжем своим и постоянными оговорками, после нескольких видео сдался смотреть весь плейлист, хотя тема очень интересная для меня, думаю и для многих кто смотрит канал.
товарищ, если вы такой умный, смотрите другие видео...с более умным изложением...их достаточно в инете...
Люди, чё за батва? Ради сраного двумерного массива правда надо так надрачивать клавиатуру?!
Для сравнения:
Надо инициализировать и заполнить с клавиатуры массив 4х4х4.
С++:
int arr [4] [4] [4] = {
{
{111, 112, 113, 114},
{121, 122, 123, 124},
{131, 132, 133, 134},
{141, 142, 143, 144}
},
{
{211, 212, 213, 214},
{221, 222, 223, 224},
{231, 232, 233, 234},
{241, 242, 243, 244}
},
{
{311, 312, 313, 314},
{321, 322, 323, 324},
{331, 332, 333, 334},
{341, 342, 343, 344}
},
{
{411, 412, 413, 414},
{421, 422, 423, 424},
{431, 432, 433, 434},
{441, 442, 443, 444}
}
}
ВСЁ! Больше ничего не надо! Теперь то же самое, на JS. Делаю так, как объяснили в ролике:
var arr11 = new Array(111, 112, 113, 114);
var arr12 = new Array(121, 122, 123, 124);
var arr13 = new Array(131, 132, 133, 134);
var arr14 = new Array(141, 142, 143, 144);
var arr21 = new Array(111, 112, 113, 114);
var arr22 = new Array(221, 222, 223, 224);
var arr23 = new Array(231, 232, 233, 234);
var arr24 = new Array(241, 242, 243, 244);
var arr31 = new Array(311, 312, 313, 314);
var arr32 = new Array(321, 322, 323, 324);
var arr33 = new Array(331, 332, 333, 334);
var arr34 = new Array(341, 342, 343, 344);
var arr41 = new Array(411, 412, 413, 414);
var arr42 = new Array(421, 422, 423, 424);
var arr43 = new Array(431, 432, 433, 434);
var arr44 = new Array(441, 442, 443, 444);
var arr1 = new Array(arr11, arr12, arr13, arr14);
var arr2 = new Array(arr21, arr22, arr23, arr24);
var arr3 = new Array(arr31, arr32, arr33, arr34);
var arr4 = new Array(arr41, arr42, arr43, arr44);
var arr = new Array(arr1, arr2, arr3, arr4);
Тут раза в три больше писать! Я не верю, что это единственный способ. Подскажите пожалуйста сокращённый синтаксис
Автор разочаровывает сильно, такое ощущение, что он сам ни хрена не понимает. Постоянно повторять "ну вы понимаете что здесь происходит" при этом ничего не объяснив толком, что происходит.
Потому что там надо подумать минуту. Некоторые усилия надо прилагать, после вы навсегда запомните.
понятно то что нечего не понятно
Кхм.. Кхм.. document.write(arr[0][arr[0].length-1])
Не надо... не делай больше обучающих уроков. Из тебя очень плохой учитель. Без обид.
+My Little Bird нормальный обучающий урок, сделай лучше или покажи где есть лучше. Обоср*ть чужое видео много ума не нужно...
уйди. Если бы не он, многим пришлось бы англоязычные уроки смотреть
Я НИЧЕ НЕ ПОНИМАЮ ЧТО ПРОСХОДИТ, НЕ ВНЯТНОЕ ОБЬЯСНЕНИЕ, ТАК ИСКОВЕРКАЛ ВСЕ
объяснение на нуле. больше запутал чем рассказал.