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

Вычисление индекса любого элемента в массиве
Привет!

Решаю задачу:
Есть очередь из людей перед кофе-автоматом, каждый человек из этой очереди возьмёт себе 2 порции кофе.
После того, как человек взял 2 порции кофе, он возвращается в конец очереди, чтобы повторить всё сначала.

Нужно вычислить, передав функции порядковый номер порции кофе, кто её купил.

Я написал такой код:
https://jsfiddle.net/1Lfky51k/

function nextPerson ( r ) {

	var names = ["Kurt", "Dave", "Kris", "Pat", "Steve"];


	if ( r % 10 === 1 || r % 10 === 2 ) {

		res = names[0]

		return res

	}

	else if ( r % 10 === 3 || r % 10 === 4 ) {

		res = names[1]

		return res

	}

	else if ( r % 10 === 5 || r % 10 === 6 ) {

		res = names[2]

		return res

	}
	
	else if ( r % 10 === 7 || r % 10 === 8 ) {

		res = names[3]

		return res

	}

	else if ( r % 10 === 9 || r % 10 === 0 ) {

		res = names[4]

		return res

	}


}
 
alert ( nextPerson ( 17 ) )


Вопрос: каким образом можно оптимизировать мой код для такой задачи в сторону минимизации?

-------------------

И хотелось бы усложнить условие:
что если мы не знаем всех людей в очереди, т.е. будут приходить новые люди (динамическое добавление в массив).
Как тогда продумать вычисление?

Что-то вроде
var names = ["Kurt", "Dave", "Kris" ]

var newName = names[names.length] = "Pat" //Правильно?


А как для вычислить чашку кофе для newName?
Ответить с цитированием