Показать сообщение отдельно
  #25 (permalink)  
Старый 09.08.2017, 16:27
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,729

Сообщение от ksa Посмотреть сообщение
Я не сторонник индусских кодов...

Час назад закончил собеседование со студентом магистратуры, ему объяснял те же постулаты.
Ок, не спорю, лишние итерации - не хорошо, но вот вопрос:
Нет гарантии того, что данные будут введены отсортированными, т.е. перед тем, как гонять данные в цикле, нужно будет обязательно отсортировать их, а это в любом случае придется пробежаться по всему объекту данных (typeof []=='object'). Т.е. в этом случае нам нужно будет аж 2 раза в цикле работать с массивом данных.
Что более индусский код, два раза гонять в цикле один и тот же объект или сделать это единожды?

$(function(){
	function count(){
		var data={
				0:2,
				2000:1.5,
				5000:1.3,
				30000:1
			},
			sum=+$("#count_inp").val() || 0,
			last_v=-999999,
			result=false;
		
		for(var val in data){
			if(data.hasOwnProperty(val) && sum>=val && last_v<val){
				result=data[val]*sum;
				last_v=val;
			};
		};
		
		$("#result p").html(result===false?'Укажите расстояние':result+' Рублей');
	};
	
	$("#process_all_b").click(count);
});
Ответить с цитированием