как отфильтровать один массив по значениям другого и не используемые значения вывести в другой массив - задача с codewars
function unusedDigits() {
let finArr = null;
let newArr = [...arguments].join(''); //массив вводных в строку
let sortArr = newArr.split(''); //в массив по одному элементу
console.log(sortArr);
let dfltArr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; //массив для фильтрации вводными
for (let i = 0; i < sortArr.length; i++) {
finArr = dfltArr.filter(function(elem) {
if (elem == sortArr[i]) {
return false;
} else {
return true;
console.log('filter', elem);
}
});
}
console.log(finArr);
}
unusedDigits(2015, 8, 26);
Ошибка заключается в теле цикла.
Переменная finArr
постоянно переписывается, однако фильтруется, так же постоянно, только переменная dfltArr
поэтому в итоге в finArr
хранится результат фильтрации по последней цифре ввода.
Для решения нужно менять одну переменную. Например dfltArr
function unusedDigits() {
let newArr = [...arguments].join(''); //массив вводных в строку
let sortArr = newArr.split(''); //в массив по одному элементу
console.log(sortArr);
let dfltArr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; //массив для фильтрации вводными
for (let i = 0; i < sortArr.length; i++) {
dfltArr = dfltArr.filter(function(elem) {
if (elem == sortArr[i]) {
return false;
} else {
return true;
}
});
}
console.log(dfltArr);
}
unusedDigits(2015, 8, 26);
Альтернативным решением может стать использование Set
, для хранения уникальных входных элементов, тогда для фильтрации достаточно будет одного вызова filter в котором будет проверяться наличие элемента в Set
.
Например:
function unusedDigits(...args) {
let newArr = new Set(args.join('')); //массив уникальных цифр
return [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].filter(elem => !newArr.has(elem.toString()));
}
console.log(unusedDigits(2015, 8, 26));
Для разнообразия
function unusedDigits(){
var azbuka = [0,1,2,3,4,5,6,7,8,9], string_ = Array.prototype.join.call(arguments)
for(var i = 0, length = string_.length; i < length; i++){azbuka[string_[i]] = undefined}
return Array.prototype.slice.call(azbuka.join(""))
}
console.log(unusedDigits(2015, [8, 26]));
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Не понимаю, сделал обычный ajax запрос, что бы подгрузилась разметка, в браузере всё отображается, что надо, а заглянул в исходный код, а там...
Делаю подключение к google maps все работает, но не могу понять как текс при наведении на кластер добавитьПотому как из бд данные подгружаются...