Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Найти все цифры из массива в числе (https://javascript.ru/forum/misc/61907-najjti-vse-cifry-iz-massiva-v-chisle.html)

rand01m 15.03.2016 00:44

Найти все цифры из массива в числе
 
Приветствую!
Собстно, сабж.
Есть функция isContains(number, array). Number - натуральное число, array - простой массив из цифр.
Для number состоящих только из цифр array возвращать true, иначе false.

alert(isContains(449, [4,9]));
//true
alert(isContains(134, [1,3]));
//false
alert(isContains(18, [8,1]));
//true
alert(isContains(18, [7,1]));
//false
alert(isContains(3, [1,3]));
//false

Я попробовал реализовать, но спотыкаюсь на числах типа isContains(149, [4,9]);

function isContains(number, array) {
      var numberArray = String(number).split('');
        return array.every(function(elem){
          if (String(number).indexOf(elem) != -1) {
            return numberArray.some(function(nElem){
              if(Number(nElem) === elem) return true;
            });
          }
        });
    }

Подскажите, пожалуйста, куда копать. :-?

Deff 15.03.2016 01:04

Возвращаем массив совпадений (вообще нун ещё фильтровать и идентичные цифры, дабы не было повторов, - не делал)
function isContains(number, array) {
      var dig = number.toString(),  outArr ;
      return    outArr = array.filter(function(num) {
         return dig.indexOf(num)!=-1;
      }); 
}
alert(isContains(149, [4,9]))

https://learn.javascript.ru/array-iteration

рони 15.03.2016 01:05

rand01m,
function isContains(number, array) {
      var numberArray = String(number).split('');
        return numberArray.every(function(elem){
          return array.indexOf(+elem) != -1

        });
    }
      alert(isContains(449, [4,9]) );
//true
 alert(isContains(134, [1,3] ));
//false
 alert(isContains(18, [8,1]) );
//true
 alert(isContains(18, [7,1]) );
//false

рони 15.03.2016 01:07

Deff,
:blink:

Deff 15.03.2016 01:11

рони,
Наверно я недопонял задачку(глянул лишь на название темы, оттель и плясал)

rand01m 15.03.2016 01:15

Цитата:

Сообщение от рони (Сообщение 410994)
rand01m,
function isContains(number, array) {
      var numberArray = String(number).split('');
        return numberArray.every(function(elem){
          return array.indexOf(+elem) != -1

        });
    }
      alert(isContains(449, [4,9]) );
//true
 alert(isContains(134, [1,3] ));
//false
 alert(isContains(18, [8,1]) );
//true
 alert(isContains(18, [7,1]) );
//false


alert(isContains(3, [1,3]) );
//true
:(

rand01m 15.03.2016 01:27

Цитата:

Сообщение от Deff (Сообщение 410998)
В принципе легко правиться
function isContains(number, array) {
      var dig = number.toString(),  outArr ;
      outArr = array.filter(function(num) {
         return dig.indexOf(num)!=-1;
      }); 
      return    outArr.join(',')==array.join(',');
}
alert(isContains(149, [4,9]))

isContains(449, [4,9])
//false
:(

Deff 15.03.2016 01:34

function isContains(number, array) {
      var dig = number.toString(),  outArr ;
      outArr = array.filter(function(num) {
         return dig.indexOf(num)!=-1;
      }); 
      return    outArr.join(',')==array.join(',');
}
alert(isContains(449, [4,9]))
alert(isContains(3, [1,3]) );

Но всё одно изврат, пользуйте код от рони

rand01m 15.03.2016 01:39

Цитата:

Сообщение от Deff (Сообщение 411000)
function isContains(number, array) {
      var dig = number.toString(),  outArr ;
      outArr = array.filter(function(num) {
         return dig.indexOf(num)!=-1;
      }); 
      return    outArr.join(',')==array.join(',');
}
alert(isContains(449, [4,9]))
alert(isContains(3, [1,3]) );

Но всё одно изврат, пользуйте код от рони

Спасибо, конечно, но...
alert(isContains(134, [1,3]) );
//true

У рони 3 не проходит проверку.

Deff 15.03.2016 01:41

rand01m, поправил cравнение:
function isContains(number, array) {
      var dig = number.toString(),  outArr ;
      outArr = array.filter(function(num) {
         return dig.indexOf(num)!=-1;
      }); 
      return    JSON.stringify(outArr)==JSON.stringify(array);
}
alert(isContains(449, [4,9]))
alert(isContains(3, [1,3]) );


Часовой пояс GMT +3, время: 12:55.