15.03.2016, 00:44
|
Интересующийся
|
|
Регистрация: 11.03.2016
Сообщений: 11
|
|
Найти все цифры из массива в числе
Приветствую!
Собстно, сабж.
Есть функция 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;
});
}
});
}
Подскажите, пожалуйста, куда копать.
Последний раз редактировалось rand01m, 15.03.2016 в 01:29.
Причина: добавил alert
|
|
15.03.2016, 01:04
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Возвращаем массив совпадений (вообще нун ещё фильтровать и идентичные цифры, дабы не было повторов, - не делал)
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
Последний раз редактировалось Deff, 15.03.2016 в 01:08.
|
|
15.03.2016, 01:05
|
|
Профессор
|
|
Регистрация: 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
});
}
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
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
Deff,
|
|
15.03.2016, 01:11
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
рони,
Наверно я недопонял задачку(глянул лишь на название темы, оттель и плясал)
Последний раз редактировалось Deff, 15.03.2016 в 01:14.
|
|
15.03.2016, 01:15
|
Интересующийся
|
|
Регистрация: 11.03.2016
Сообщений: 11
|
|
Сообщение от рони
|
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:18.
|
|
15.03.2016, 01:27
|
Интересующийся
|
|
Регистрация: 11.03.2016
Сообщений: 11
|
|
Сообщение от Deff
|
В принципе легко правиться
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
|
|
15.03.2016, 01:34
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
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]) );
Но всё одно изврат, пользуйте код от рони
Последний раз редактировалось Deff, 15.03.2016 в 01:37.
|
|
15.03.2016, 01:39
|
Интересующийся
|
|
Регистрация: 11.03.2016
Сообщений: 11
|
|
Сообщение от Deff
|
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 не проходит проверку.
|
|
15.03.2016, 01:41
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
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]) );
Последний раз редактировалось Deff, 15.03.2016 в 01:48.
|
|
|
|