Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.10.2014, 00:13
Новичок на форуме
Отправить личное сообщение для running Посмотреть профиль Найти все сообщения от running
 
Регистрация: 15.10.2014
Сообщений: 8

Вывод числа, содержащий цифру 2
Ребята, подскажите пожалуйста, как из цикла:
for (i=0; i<100; i++) вывести числа, содержащие цифру 2 и саму цифру 2 ?

p.s. в названии темы опечатка "содержащее", нет возможности отредактировать.

Последний раз редактировалось running, 15.10.2014 в 00:19.
Ответить с цитированием
  #2 (permalink)  
Старый 15.10.2014, 00:29
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

running,

<script>
for (var i=0; i<100; i++)  /2/.test(i) && document.write(i+' ')
</script>
Ответить с цитированием
  #3 (permalink)  
Старый 15.10.2014, 00:35
Новичок на форуме
Отправить личное сообщение для running Посмотреть профиль Найти все сообщения от running
 
Регистрация: 15.10.2014
Сообщений: 8

Сообщение от рони Посмотреть сообщение
running,

<script>
for (var i=0; i<100; i++)  /2/.test(i) && document.write(i+' ')
</script>
Спасибо, большое !
Ответить с цитированием
  #4 (permalink)  
Старый 15.10.2014, 08:45
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

рони, кстати при очень больших числах будет неправильно работать)
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #5 (permalink)  
Старый 15.10.2014, 09:09
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Решил сравнить скорость )
(function() {


function test1() {

	for (var i=0; i<1000000; i++) {
		if (/2/.test(i)) {
			//console.log(i);
		}
	}
}

function test2() {

	function containsDigit(number, digit) {
		while (number > 0) {
			if (number % 10 == digit)
				return true;
			number = (number/10)|0;
		}
		return false;
	}

	for (var i=0; i<1000000; i++) {
		if (containsDigit(i, 2)) {
			//console.log(i);
		}
	}
}


var t1 = Date.now();
test1();
t1 = Date.now() - t1;

var t2 = Date.now();
test2();
t2 = Date.now() - t2;

alert("test1: " + t1 + ", test2: " + t2);

})();
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #6 (permalink)  
Старый 15.10.2014, 09:56
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

danik.js,
ок твой способ быстрее , мой короче - про большие числа тс не указал -- но я запомню -- спасибо за науку
Ответить с цитированием
  #7 (permalink)  
Старый 15.10.2014, 10:47
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

Добавил вариант с рекурсией. Чисто для образования, так как он намнооого дольше
(function() {


function test1() {

	for (var i=0; i<1000000; i++) {
		if (/2/.test(i)) {
			//console.log(i);
		}
	}
}

function test2() {

	function containsDigit(number, digit) {
		while (number > 0) {
			if (number % 10 == digit)
				return true;
			number = (number/10)|0;
		}
		return false;
	}

	for (var i=0; i<1000000; i++) {
		if (containsDigit(i, 2)) {
			//console.log(i);
		}
	}
}

function test3() {

	function containsDigit(number, digit) {
		if (number == 0) return false;
		if (number % 10 == digit) return true;
		containsDigit((number/10)|0, digit);
	}

	for (var i=0; i<1000000; i++) {
		if (containsDigit(i, 2)) {
			//console.log(i);
		}
	}
}

var t1 = Date.now();
test1();
t1 = Date.now() - t1;

var t2 = Date.now();
test2();
t2 = Date.now() - t2;

var t3 = Date.now();
test3();
t3 = Date.now() - t3;

alert("test1: " + t1 + ", test2: " + t2 +", test3: " + t3);

})();

P.S. У меня в файрфоксе вариант Рони быстрее - test1: 423, test2: 530, test3: 2131.
Ответить с цитированием
  #8 (permalink)  
Старый 15.10.2014, 10:55
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Ты забыл return.
У меня Firefox 32: test1: 193, test2: 39, test3: 53
__________________
В личку только с интересными предложениями
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Есть числа от (0 до 100) что бы все эти числа были заменины в итоге например 110 impi Общие вопросы Javascript 4 08.10.2014 08:30
вывод числа со знаком LLIyRiK911 Общие вопросы Javascript 18 02.03.2013 19:53
Вывод переменных MasterHrust Javascript под браузер 4 03.08.2011 15:41
Вывод данных из mysql Евген AJAX и COMET 3 22.08.2010 17:55
число 76.4705882.. сделать 76.47? (числа всегда разные) TongaG Ваши сайты и скрипты 3 19.01.2010 07:35