Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 02.04.2016, 00:29
Аватар для Alexander Belov
Профессор
Отправить личное сообщение для Alexander Belov Посмотреть профиль Найти все сообщения от Alexander Belov
 
Регистрация: 12.03.2015
Сообщений: 173

рони,
Прошу объяснить, что выполняет код
1.
a!= +a //Если номер чашки не равен номеру чашки * 2? Т.е, если это не "ноль"?


2.
(a = names.indexOf(a) + 1, [a *= 2, --a].reverse()) // Для чего тут используется reverse()? Какой массив мы им переворачиваем?


3.
(a % 2 && --a, a = a / 2 % names.length, names[a]) // Вообще без внятных догадок...



function nextPerson(a) {

    return a != +a ? (a = names.indexOf(a) + 1, [a *= 2, --a].reverse())

    : (a % 2 && --a, a = a / 2 % names.length, names[a])

};
Ответить с цитированием
  #12 (permalink)  
Старый 02.04.2016, 00:45
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

Alexander Belov,
1.проверка что а это строка
2. можно без reverse
3. если число 17(нечётное) сделать его 16(чётным), разделить на 2, стало 8, получить остаток от деления на длину массива 5 , стало 3 , вернуть элемент массива с индексом 3 , стало "Pat",
Ответить с цитированием
  #13 (permalink)  
Старый 02.04.2016, 00:56
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

Alexander Belov,
2. если а это строка "Pat" находим индекс элемента массива с этой строкой, было "Pat" стало индекс 3 + 1 , или 4, 4 умножить 2 = 8 , 8 - 1 = 7 итого [8,7] для мнимого удобства переворачиваем reverse , получили [7,8] -- то есть по порядку "Pat" выпьет седьмую и восьмую чашку ...
Ответить с цитированием
  #14 (permalink)  
Старый 02.04.2016, 01:04
Аватар для Alexander Belov
Профессор
Отправить личное сообщение для Alexander Belov Посмотреть профиль Найти все сообщения от Alexander Belov
 
Регистрация: 12.03.2015
Сообщений: 173

рони,
Благодарю! Так понятнее.
Ответить с цитированием
  #15 (permalink)  
Старый 02.04.2016, 01:25
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

Alexander Belov,
исправил , сейчас
(a % 2 && ++a, a = (a - 2) / 2 % names.length,names[a])
Ответить с цитированием
  #16 (permalink)  
Старый 02.04.2016, 01:29
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

Alexander Belov,
<script>
var names = ["Kurt", "Dave", "Kris", "Pat", "Steve"]
function nextPerson(a) {
    return a != +a ? (a = names.indexOf(a) + 1, [a *= 2, --a].reverse())
    : (a % 2 && ++a, a = (a - 2) / 2 % names.length, names[a])
};
for (var i=1; i<=30; i++)  {document.write(i + " => " +nextPerson ( i )+"<br>")}
  </script>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отображение нового элемента в массиве Sashkouuu Элементы интерфейса 6 01.02.2016 10:33
Инкремент индекса элемента массива или как создавать уникальные имена для переменных? Blondinka Общие вопросы Javascript 6 20.08.2015 09:50
Вопрос по удалению элемента в массиве и по функциям bot87 Общие вопросы Javascript 5 26.04.2012 14:43
Сортировка элемента в массиве bayrach Общие вопросы Javascript 2 23.02.2012 18:41
Как сделать реакцию на изменение любого элемента формы. Mik Events/DOM/Window 3 28.07.2011 08:52