<MyRusakov.ru />

React JS, Redux, ES2015 с Нуля до Гуру

React JS, Redux, ES2015 с Нуля до Гуру

Данный курс - это обширный курс по JavaScript и фреймворку React, который позволит Вам с нуля создавать мощные современные, динамические JavaScript-приложения.

Вы узнаете о тонкостях работы с "профессиональным" JavaScript, а так же узнаете о нововведениях в его новый стандарт ES2015, Вы узнаете, как организовать профессиональное окружение для FrontEnd, изучите профессиональный фреймворк - ReactJS.

А в практической части с полного нуля будет создано мощное и быстрое динамическое приложение, где Вы на практике познакомитесь, как создавать очень гибкую и расширяемую архитектуру, для разработке функционала любой сложности.

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Массивы в JavaScript

Массивы в JavaScript

Массивы - это тип данных, который может содержать много значений. Другими словами, переменная типа массив - это переменная, содержащая в себе не одно значение (как было раньше), а много значений одновременно.

Общий вид создания массива в JavaScript такой:

var name = new Array(value_1, value_2, ..., value_n);

Таким образом, переменная с именем "name" содержит в себе массив со значениями: value_1, value_2, ..., value_n. Обращаться к массиву надо так:

name[i];

То есть пишется имя массива, а в квадратных скобках указывается порядковый номер массива. Причём, нумерация начинается с нуля. То есть первый элемент имеет индекс 0.

Давайте создадим и выведем второй элемент массива.

var arr = new Array(3, 4, 0, true, "string");
document.write(arr[1]);

Запустив этот скрипт, у нас в окне браузера появится 4. Теперь давайте выведем весь массив в окно браузера:

for (i = 0; i < arr.length; i++)
  document.write(arr[i]);

Для того, чтобы вывести весь массив можно воспользоваться циклом. Здесь мы перебираем переменную i от 0 до длины массива (arr.length - это свойство, которое содержит длину массива arr). Затем мы выводим элемент массива, указав переменную итерации - i.

Давайте теперь мы решим такую задачу: пользователь последовательно вводит 5 чисел, которые мы вводим в массив, а потом выводим его в окно браузера.

var arr = new Array();
for (i = 0; i < 5; i++)
  arr[i] = prompt("Введите " + (i + 1) + "-ое число");
for (i = 0; i < arr.length; i++)
  document.write(arr[i]);

Вначале мы создаём переменную, которая отвечает за массив. Дальше мы в цикле запрашиваем у пользователя по очереди 5 чисел. А потом в цикле выводим полученный массив в браузер.

Эта вся теория по созданию массивов в JavaScript. Теперь я Вам советую закрепить полученный материал и попытаться решить такую задачу: пользователь вводит последовательно 5 чисел, которые затем помещаются в массив. Затем создать функцию, которая принимает в качестве параметра массив и возвращает максимальный элемент в массиве. Выведите максимальный элемент массива, используя созданную Вами функцию.

Удачи!

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (32):

GoTo GoTo 16.04.2012 12:19:48

Михаил, а почему зависает скрипт? <script language = "javascript"> var arr = new Array(3, 4, 0, true, "string"); for (i = 0; arr.length; i++) document.write(arr[i]); </script>

Ответить

Admin Admin 16.04.2012 12:29:28

Цикл неправильный, вот for (i = 0; i < arr.length; i++)

Ответить

GoTo GoTo 16.04.2012 12:49:56

Ну, тогда статью правьте. :-) После слов "Запустив этот скрипт, у нас в окне браузера появится 4. Теперь давайте выведем весь массив в окно браузера:..."

Ответить

Admin Admin 16.04.2012 12:53:05

Уже исправил, спасибо, что заметили!

Ответить

GoTo GoTo 16.04.2012 13:01:57

Михаил, не могу усвоить, когда нужно круглые скобки ( {} ) ставить, а когда нет. Вот здесь, например, нужно? <script language = "javascript"> var arr = new Array(3, 4, 0, true, "string"); for (i = 0; i < arr.length; i++) document.write(arr[i]); document.write("<br>"); document.write(arr[2]); </script>

Ответить

Admin Admin 16.04.2012 13:03:31

Когда больше 1-го оператора внутри цикла (или, например, условия), то обязательно надо ставить фигурные скобки. Если только 1 оператор, то ставить необязательно.

Ответить

GoTo GoTo 16.04.2012 13:14:31

Так правильно? for () { document.write(); document.write(); document.write(); }

Ответить

Admin Admin 16.04.2012 13:16:49

Да, если Вы хотите, чтобы document.write() в каждой итерации выполнялся по 3 раза.

Ответить

star05 star05 18.05.2012 17:11:57

Добрый день! Решил вашу задачу, однако при работе данного скрипта при сравнении двух чисел, если одно из них двузначное - то сравнивается первая цифра этого числа, а не само число. Таким образом при задании ряда 2,7,8,12,9 выдается максимальное число 9, а при ряде 2,3,6,8,91 выдает максимаьлное 91. Вот код (с выводом промежуточных результатов): <script language="javascript" type="text/javascript"> var arr = new Array(); for (i = 0; i < 5; i++) arr[i] = prompt("!Введите " + (i + 1) + "-ое число"); document.write(arr+ " //" + arr.length + "<br />" ); function max(arr) { var max = arr[0]; for (i = 1; i < arr.length; i++){ document.write(arr[i] + " "); document.write(max + " "); if (arr[i] > max) max = arr[i]; document.write(max + "<br />"); } return max; } document.write("<br />"+max(arr)); </script>

Ответить

Admin Admin 18.05.2012 18:09:47

Для этого надо использовать функцию Number(), о которой будет рассказываться в следующих уроках после этого задания, поэтому посмотрите их (как я понял, Вы про курс "Создание и раскрутка сайта от А до Я").

Ответить

fred fred 01.08.2012 17:20:13

Молодец, что решил. Но еще больший молодец, что выложил. Уверен, что найдутся многие, кому это будет интересно. Разумеется, Русакова этим не удивишь. И продвинутые пользователи такие статейки не читают. А для начинающих – такие комментарии большое подспорье. Что не понравилось – на экран выводится всякая хрень. Я взял на себя смелость добавить несколько комментариев, которые наглядно демонстрируют процесс поиска. Вот откомментированный скрипт. <script language="javascript" type="text/javascript"> var arr = new Array(); for (i = 0; i < 5; i++) arr[i] = prompt("Введите " + (i + 1) + "-ое число"); document.write("Создан массив: "+"<strong>"+arr.join(",&nbsp;")+"</strong><br>" ); document.write("<i>Выбираем максимальное значение элемента массива.</i><br><br>"); function max() { var max = arr[0]; //Создается новая переменная, Которой присваиватеся значение первого символа массива. for (i = 1; i < arr.length; i++){ //Цикл выбирает для сравнения последующее число, начиная со второго. document.write("Значение последующего элемента массива - "+ arr[i]+"<br>"); document.write("Сравнение идет с числом - "+max + "<br> "); if (arr[i] > max) max = arr[i]; //Сравнивается предыдущий элемент найденным наибольшим. Полученный максимум вводится в новую переменную document.write( "Для дальнейшего рассмотрения выбирается число "+max + ", как имеющее большую величину.<br><br>"); } return max; } document.write("<br />Максимальное значение элемента в массиве равно - <strong>"+max(arr)+"</strong>"); </script> Только при его запуске нужно учитывать сделанное замечание. Иначе выведется ерунда. Типа, «из двух чисел 9 и 49 выбираем 9, как имеющее большее значение»

Ответить

katushka katushka 02.12.2012 19:52:43

Большой соблазн, посмотреть и скопировать "готовый код", ну вот надо ли это делать.Лучше самостоятельно голову поломать, так что убегаю с данной статьи до тех пор пока сама не разберусь

Ответить

leka leka 25.09.2012 02:01:36

Добрый вечер! Михаил подскажите пож. если надо один массив с введёнными даными хранить, а другой заполнять с клавиатуры , как бы дополнение к первому массиву. Как лучше это представить, что б понятней было привожу код var vopros = new Array(); var otvet = new Array(); alert ('При ответе на вопросы используйте "да" или "нет"'); vopros [0] = "В древнегреческих мифах назывался 'океаном' река обтекающая всю землю?"; vopros [1] = "По мнению древних римлян, экватор уравнивал земной шар?"; vopros [2] = "Является ли люстра достопримичательностью Большого театра, которую прозвали хрустальным облаком?"; vopros [3] = "Придумал для изготовления денег монетный станок Леонардо де Винчи?"; vopros [4] = "Сакэ - это белое сухое вино?"; for (var i=0; i<vopros.length; i++) { var a = prompt (vopros[i], otvet.unshift([i])); if (otvet[i] == "да") { otvet[i] = "верно"; alert ("верно"); } else if (otvet[i] == "нет") { otvet[i] = "не верно"; alert ("не верно"); } } for (var i=0; i<vopros.length; i++) { document.write (vopros[i]+ "\t" + ":" + "\t" +otvet[i]+ "<br />" + "<br />"); } и выходит, что значения второго массива почему то заполняются цифрами

Ответить

Admin Admin 25.09.2012 16:16:34

Вы сами записываете в массив ответов цифры, а потом пытаетесь сравнивать их со строками "да" и "нет". А вот переменная 'a', в которую записывается ответ вообще не используется.

Ответить

leka leka 25.09.2012 21:04:28

спасибо

Ответить

Margo Margo 10.12.2012 00:31:15

а я решила=) сама=) Все корректно работает.Только я немного задание изменила..У меня не конкретно 5 чисел,а столько чисел,сколько ввел ползователь...и из них выбирается максимальное. var mas = new Array(); a = prompt ('vvedite kol elementov v massive'); for (var i = 0; i < a; i++) mas[i] = prompt ('vvedite '+(i+1)+'-ii element'); document.write(' <br/>'); for (var i = 0; i < mas.length; i++) document.write(mas[i]+' '); function poisk(){ for (var i = 0; i < a; i++) { if (mas[i] < mas[i+1]) continue ; else { var k = mas[i]; mas[i] = mas[i+1]; mas[i+1] = k;} } document.write(mas[i]+' '); } document.write(' <br/>'); poisk();

Ответить

Bagi Bagi 03.03.2016 04:07:19

Margo, понимаю, много лет прошло, но если ты еще здесь бываешь, то расшифруй пожалуйста вот эту часть своего кода { var k = mas[i]; mas[i] = mas[i+1]; mas[i+1] = k;} Что то не могу понять зачем здесь переменная "к" и какое действие это условие обрабатывает? Михаил если вы сможете ответить, то был бы рад?

Ответить

neo321654 neo321654 04.06.2013 07:22:46

Сделал с тремя цифрами, знаю что надо делать циклами,т.к. код плохой, но есть ошибка которую не могу понять,вот код <script language = "javascript"> var arr = new Array(); for (i = 0; i < 3; i++) arr[i] = prompt("Введите " + (i + 1) + "-ое число"); function func(a) { if (a[0] > a[1] && a[0] > a[2]) document.write(a[0]) else if (a[1] > a[2])document.write(a[1]); else document.write(a[2]); } func(arr); </script> Если первое число большое, а второе меньше третьего->отображается третье, в чём дело.

Ответить

Admin Admin 04.06.2013 11:14:24

Функцию Number() надо использовать для преобразования строк из prompt в числа. И дальше, если это сразу проблему не решит, вот это: http://myrusakov.ru/javascript-finderror.html

Ответить

bwolf bwolf 19.11.2013 00:47:52

Ответ на задачку: с алертами всё понятно, пример есть в Вашем уроке, далее пользователь ввел данные, работаем с массивом. Считаю этот код гораздо проще предложенных выше из которых я честно говоря мало что понял :) Введенные числа на примере массива MyMass: //5 разных чисел var MyMass=[12,18,22,56,2]; //сортировка чисел по возростанию (Эту строку я подсмотрел в Гугл) MyMass.sort(function(a,b){return a - b}); //Вывод последнего элемента массива с самым большим числом. Отталкивался от длины массива, чтобы в случае чего можно было применить к массивам с большим количеством элементов: document.write(MyMass[MyMass.length -1]);

Ответить

bwolf bwolf 19.11.2013 00:56:07

Либо можно было в строке с сортировкой чисел заменить "а - b" на "b - a", тогда числа сортировались бы в сторону уменьшения и самое большое число в массиве было бы первым, тогда последняя строка кода была бы document.write(MyMass[0])... да так даже проще :)

Ответить

namik21 namik21 31.08.2014 15:59:55

prompt всегда возвращает строковое значение , чтоб значение было числом надо просто перед prompt поставить знак "+" , например var x = + prompt("введите число");//x число......... var x =prompt("введите число");//без "+" x - строка///// кстати Михаил , не могли бы вы сделать так чтоб комменты сортировались по дате последние -сверху , думаю так могло быть лучше

Ответить

vikulya2601994@mail.ru vikulya2601994@mail.ru 26.03.2015 12:18:00

<script language = "javascript"> var arr = new Array (); for (i=0;i<5;i++) arr[i]=prompt("Введите " + (i+1) + "-ое число"); for (i=0;i<arr.lenght;i++) document.write(arr[i]); function maxArray() { var max=0; for (i=0;i<5;i++) if (arr[i]>max) max=arr[i]; document.write (max); } maxArray(); </script>

Ответить

ivanoved ivanoved 27.10.2016 16:37:28

У Викули код прекрасно работает, если поставить + перед prompt, хотя в коде синтаксическая ошибка:в arr.lenght - надо t и h местами поменять. И что странно, если меняешь - то код перестает работать. Почему???

Ответить

Iguar Iguar 23.05.2015 15:02:47

Не понимаю, написал вручную код из последнего примера: var arr = new Array(); for (i = 0; i < 5; i++) arr[i] = prompt("введите " + (i + 1) + "-ое число"); for (i = 0; i < arr.lenght; i++) document.write(arr[i]); -- не выводит на страницу массив. Копирую код с этой страницы -- выводит. Все глаза просмотрел, вроде коды идентичные, так почему ж мой не работает?

Ответить

ivanoved ivanoved 27.10.2016 16:30:39

Iguar,увас набрано: arr.lenght, а надо arr.length

Ответить

int int 18.06.2015 20:13:12

new Array(6).join(' ').match(/\s/gi).map(function(i,v){ document.write(i=prompt()); }); Создает объект и сразу удаляет после выполнения.

Ответить

OMYT OMYT 18.10.2015 16:07:30

Что-то тут ребята всё усложняют слишком с решением задачи. Разве не проще сделать так: var num = new Array(); for (i = 0 ; i < 5 ; i++) { num[i] = prompt("Введите " + (i + 1) + "-ое число"); } function maxNum(array) { return Math.max.apply(null, array); } console.log(maxNum(num));

Ответить

Bagi Bagi 03.03.2016 02:43:48

Рахмет Михаил Русаков за уроки! Три дня убил на то, чтобы выполнить задание, но вроде получилось... Михаил, если в моем коде все правильно, то дай знать, пожалуйста? Правда я вместо 5 элементов в массиве использовал 3. Вот код: <script type="text/javascript"> var arr = new Array(); for (i = 0; i < 3; i++) { arr[i] = +prompt("введите " + (i + 1) + "-ое число"); } function max (arr) { var max = ""; if ((arr[0] > arr[1]) && (arr[0] > arr[2])) {max = arr[0];} else if (arr[1] > arr[2]) {max = arr[1];} else {max = arr[2];} document.write (max); } max (arr); </script>

Ответить

Bagi Bagi 03.03.2016 03:18:54

А вот чтобы при вводе не числовых значений (т.е. любых символов кроме чисел) выводило об этом сообщение, то надо функцию изменить на следующую: function max (arr) { var max = ""; if ((arr[0] > arr[1]) && (arr[0] > arr[2])) {max = arr[0];} else if ((arr[1] > arr[2]) && (arr[1] > arr[0])) {max = arr[1];} else if ((arr[2] > arr[1]) && (arr[2] > arr[0])) {max = arr[2];} else if ((arr[0] == arr[1]) && (arr[0] > arr[2])) {max = arr[0];} else if ((arr[0] == arr[2]) && (arr[0] > arr[1])) {max = arr[0];} else if ((arr[1] == arr[2]) && (arr[1] > arr[0])) {max = arr[1];} else if ((arr[0] == arr[1]) && (arr[1] == arr[2])) {max = arr[0];} else alert ("одно из введенных значений не числовое!"); document.write (max); }

Ответить

Liliya Liliya 15.05.2016 17:34:38

var arr=new Array; for(i=0;i<5;i++){ arr[i]=prompt("Введите число"); } for(i=0;i<arr.length;i++){ document.write(arr[i]); var max=arr.sort(function(a,b){return(a-b)}); document.write(max+"<br>"); } Михаил,не пойму почему вроде бы сортирует,но выдает это 5 раз,что не так?

Ответить

cximnik81 cximnik81 14.11.2016 18:57:42

В строках: var arr = new Array(); for (i = 0; i < 5; i++) arr[i] = prompt("Введите " + (i + 1) + "-ое число"); не указана фигурными скобками {} внутренняя часть цикла, но браузер запрашивает цифры от одного до пяти, а не шесть. Когда же я написал тоже самое сам, он запросил именно шесть. Почему так?

Ответить

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.