Demigodd
@Demigodd

Как найти все повторяющиеся цифры числа в Javascript?

Как найти все повторяющиеся цифры в числе ?
Не могу представить...
С массивом можно циклом пройтись сортировать потом проверить первые и вторые элементы.
Но вот с числа другое дело.
  • Вопрос задан
  • 2570 просмотров
Решения вопроса 3
0xD34F
@0xD34F Куратор тега JavaScript
const digits = Object
  .entries([...`${num}`].reduce((acc, n) => (acc[n] = (acc[n] || 0) + 1, acc), {}))
  .reduce((acc, n) => (n[1] > 1 && acc.push(+n[0]), acc), []);

или

const digits = num
  .toString()
  .split('')
  .reduce((acc, n) => (acc[n]++, acc), Array(10).fill(0))
  .map((n, i) => n > 1 && i)
  .filter(n => n !== false);

или

const digits = Array
  .from(String(num), Number)
  .filter((n, i, a) => i !== a.indexOf(n))
  .filter((n, i, a) => i === a.indexOf(n));

или

const digits = (('' + num)
  .match(/\d/g)
  .sort()
  .join('')
  .match(/(\d)\1+/g) || [])
  .map(n => n[0] | 0);
Ответ написан
Комментировать
@SANTA2112
[...`${2366789363674}`].filter((n, i, arr) => arr.indexOf(n) === i && arr.lastIndexOf(n) !== i)


[...new Set([...`${233456378678}`].filter((n, i, arr) => arr.indexOf(n) !== i ))]
Ответ написан
Комментировать
dollar
@dollar
Делай добро и бросай его в воду.
С массивом можно циклом пройтись...

А, так массивы нельзя использовать? Хорошо...
var num = 123445.6778;

while(Math.floor(num)!=num)num*=10;
var a=!num,b=0;
while(num){
  c=1<<num%10,a&c&&(b|=c)||(a|=c);
  num=Math.floor(num/10);
}

for(i=0;i<10;i++)if(a&1<<i&b)
  console.log('Цифра '+i+' повторяется несколько раз.');

//Цифра 4 повторяется несколько раз.
//Цифра 7 повторяется несколько раз.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
hahenty
@hahenty
('•')
new Set( number.toString() )
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы