Javascript.RU

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

Вроде элементарная задачка
Всем привет, сам себе придумал задачу и не могу ее решить.
Суть :
Верно ли, что это число содержит ровно три одинаковые
цифры, как, например, числа 6676, 4544, 0006 и т. д.?
Я хочу цифры, которые повторяются 3 раза, поместить единоразово в массив. Например чтобы 6676 => [6];
Код такой:

var x = " 34342224"; //Само число
var arr = []; // Массив, в который все положу
for(var i = 1; i <= x.length-1; i++){ //Здесь мы берем числа КОТОРЫЕ будем сравнивать
var a = x.charAt(i);
var counter = 0;
for (var j = 1; j <= x.length -1; j++){ // Здесь берем числа С КОТОРЫМИ будем сравнивать
if(a == x[j]){
counter++;
}
}
if(counter >=3){
arr.push(a);
}
}
Но вместо arr = [4,2] я получаю ["4", "4", "2", "2", "2", "4"];
Не могу справиться уже часа 2, помогите пожалуйста.
Ответить с цитированием
  #2 (permalink)  
Старый 05.07.2016, 14:20
Интересующийся
Отправить личное сообщение для hujak_hujak Посмотреть профиль Найти все сообщения от hujak_hujak
 
Регистрация: 05.07.2016
Сообщений: 15

Я понимаю что все дело в
if(counter >=3){
arr.push(a);
Но не врубаюсь куда я его должен правильно вставить
Ответить с цитированием
  #3 (permalink)  
Старый 05.07.2016, 14:30
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

hujak_hujak,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
Ответить с цитированием
  #4 (permalink)  
Старый 05.07.2016, 14:37
Аватар для Viral
Профессор
Отправить личное сообщение для Viral Посмотреть профиль Найти все сообщения от Viral
 
Регистрация: 26.04.2011
Сообщений: 472

hujak_hujak, было уже
Ответить с цитированием
  #5 (permalink)  
Старый 05.07.2016, 14:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

hujak_hujak,
var x = "34342224"; //Само число
var arr = []; // Массив, в который все положу;
var obj = {}; //Обьект для исключения повторных проверок
for(var i = 0; i < x.length; i++){ //Здесь мы берем числа КОТОРЫЕ будем сравнивать
var a = x.charAt(i);
if (obj[a]) continue;
obj[a] = true;
var counter = 1;
for (var j = i + 1; j < x.length; j++){ // Здесь берем числа С КОТОРЫМИ будем сравнивать
if(a == x[j]){
 counter++;
 }
 }
 if(counter == 3){
 arr.push(a);
 }
 }
 alert(JSON.stringify(arr))
Ответить с цитированием
  #6 (permalink)  
Старый 05.07.2016, 14:51
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

var x = " 34342224"; //Само число
var arr = []; // Массив, в который все положу
for(var i = 0; i <= 9; i++){ //Здесь мы берем числа КОТОРЫЕ будем сравнивать
   var a = i.toString(); 
   var counter = 0;
   for (var j = 0; j <= x.length ; j++){ // Здесь берем числа С КОТОРЫМИ будем сравнивать
      if(a == x[j]){
         counter++;
      }
   }
   if(counter >=3){
      arr.push(a);
   }
}
alert(JSON.stringify(arr));

Последний раз редактировалось Dilettante_Pro, 05.07.2016 в 14:53.
Ответить с цитированием
  #7 (permalink)  
Старый 05.07.2016, 15:28
Интересующийся
Отправить личное сообщение для hujak_hujak Посмотреть профиль Найти все сообщения от hujak_hujak
 
Регистрация: 05.07.2016
Сообщений: 15

Спасибо большое, а насчет "было уже", сорри, я тут новенький, буду знать
Ответить с цитированием
  #8 (permalink)  
Старый 05.07.2016, 16:18
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

Мой маленький велосипед
var arr = [73435, 968959, 450300],
    result = arr.reduce(function(prev, el) {
        el = el.toString().split('').sort().join('');
        if (/(\d)\1{2}/.test(el)) {
            prev.push(el.replace(/^.*(\d)\1{2}.*$/, '$1'));
        }
        return prev;
    }, []);
    alert(JSON.stringify(result));

var arr = [73435, 968995988, 450300, 226],
    result = arr.reduce(function(prev, el) {
        el = el.toString().split('').sort().join('');
        if (/(\d)\1{2}/.test(el)) {
            prev.push(el.match(/(\d)\1{2}/g).map(function(val) {
              return val[0];
            }));
        }
        return prev;
    }, []);
    alert(JSON.stringify(result));

Последний раз редактировалось Vlasenko Fedor, 05.07.2016 в 17:06.
Ответить с цитированием
  #9 (permalink)  
Старый 05.07.2016, 19:26
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

Ещё вариант для полноты картины
<script src="https://cdn.jsdelivr.net/lodash/4.13.1/lodash.min.js"></script>
<script>
alert(JSON.stringify(_.uniqBy(_.flatten(_.filter(_.groupBy([..."34342224"]), v => v.length === 3)))))
</script>
Ответить с цитированием
  #10 (permalink)  
Старый 05.07.2016, 23:46
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

вариантов может быть очень много
var temp = {};
alert(JSON.stringify(('' + 34342224).split('').filter(function (a) {
    return  temp[a] = ++temp[a] || 1, temp[a] == 3;
})));

Последний раз редактировалось Vlasenko Fedor, 05.07.2016 в 23:53.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задачка: Хром / Мозилла? eirnvn Opera, Safari и др. 0 09.07.2013 13:18
Вроде простая проблема jorik Events/DOM/Window 15 13.06.2012 12:07
задачка по геометрии js lammeR Общие вопросы Javascript 16 02.02.2011 16:01
Нестандартная задачка lsync Общие вопросы Javascript 6 04.09.2010 19:34
Небольшая задачка Maksim jQuery 4 30.09.2009 19:43