Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 15.03.2016, 01:51
Интересующийся
Отправить личное сообщение для rand01m Посмотреть профиль Найти все сообщения от rand01m
 
Регистрация: 11.03.2016
Сообщений: 11

Сообщение от Deff Посмотреть сообщение
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]) );
alert(isContains(134, [1,3]));
//true

з.ы. список проверок в первом посте.
Ответить с цитированием
  #12 (permalink)  
Старый 15.03.2016, 02:18
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

function isContains(number, array) {
      if(typeof(number)!="number") return false;
      var dig = number.toString().split(''), obj ={},obj2 ={};
      array.forEach(function(item) {
           if(typeof(item)!="number") return false;
           obj[item] =1;
           if(dig.indexOf(''+item)!=-1)obj2[item]=1;
      });
      dig.forEach(function(item) {if(!obj2[item]) obj2[item]=0;});
      return    JSON.stringify(obj)==JSON.stringify(obj2);
}
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

Последний раз редактировалось Deff, 15.03.2016 в 04:11.
Ответить с цитированием
  #13 (permalink)  
Старый 15.03.2016, 06:49
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

rand01m,
function isContains(number, array) {
         var numberArray = String(number).split('');
         return numberArray.every(function(elem) {
             return array.indexOf(+elem) != -1
         }) && array.every(function(elem) {
             return numberArray.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]));
     //false
Ответить с цитированием
  #14 (permalink)  
Старый 15.03.2016, 23:22
Интересующийся
Отправить личное сообщение для rand01m Посмотреть профиль Найти все сообщения от rand01m
 
Регистрация: 11.03.2016
Сообщений: 11

Ребят, большое спасибо!
з.ы. В сети видел чуть другой алгоритм - брать остаток от деления проверяемого числа на 10, проходясь по массиву.
Если остаток не соответствует текущему элементу массива, то элемент выпиливается. В итоге, функция возвращает сравнение нуля и длины обработанного массива. Если все цифры из проверочного массива есть в проверяемом числе, то естественно, конечный массив будет пуст, длина нулевой, что есть true, иначе false.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сделать все элементы массива уникальными exec Общие вопросы Javascript 43 25.12.2015 01:14
Найти все подстроки в строке BorisBritva jQuery 2 11.04.2013 22:47
найти все элементы формы wcb-falcon Общие вопросы Javascript 6 17.07.2012 18:22
Название ячейки таблицы Questioner Общие вопросы Javascript 6 16.02.2011 09:58
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37