Реализуйте набор готовых к использованию функций для arr.filter:
Реализуйте набор готовых к использованию функций для arr.filter:
notInArray([...]) – значение не находится в данном массиве.
Они должны использоваться таким образом:
arr.filter(notInArray([1,2,3])) – выбирает только те элементы,
которые не совпадают ни с одним из элементов массива
Пример:
let arr = [1, 2, 3, 4, 5, 6, 7, true, undefined, NaN];
console.log(arr.filter(notInArray([1, 2, 3, 4, 5, 6, 7, true]))); // [undefined, NaN]
Мой код:
const notInArray = arr => {
return function(element, i, array) {
for (let i = array.length - 1; i >= 0; i--) {
if (arr.includes(array[i])) {
array.splice(i, 1);
}
}
return array;
};
};
Проверку не проходит.
Ответы (1 шт):
Исправляем ошибки в вашем коде:
Функции notInArray достаточно вернуть функцию, принимающую один аргумент(это будет текущий элемент фильтруемого массива), остальные не нужны(в данном примере).
В возвращаемой фукнции необходимо делать проверку, сущестует ли текущий элемент массива в массиве исключений. Если существует, вернуть false, иначе true.
const notInArray = arr => elem => !arr.includes(elem);
let arr = [1, 2, 3, 4, 5, 6, 7, true, undefined, NaN];
console.log(arr.filter(notInArray([1, 2, 3, 4, 5, 6, 7, true])))
console.log(arr.filter(notInArray([1, 2, 3, 4, undefined])))
console.log(arr.filter(notInArray([4, 5, 6, 7, NaN])))
Если запись в одну строку сложна, то ниже полное описание функции с трансформацией
const notInArray = arr => elem => !arr.includes(elem);
//
const notInArray = arr => elem => {
return !arr.includes(elem);
}
//
const notInArray = arr => {
return elem => {
return !arr.includes(elem);
}
}
//
const notInArray = arr => {
return elem => {
if (arr.includes(elem)) {
return false
} else {
return true
}
}
}
//
const notInArray = arr => {
return function(elem) {
if (arr.includes(elem)) {
return false
} else {
return true
}
}
}
//
function notInArray(arr) {
return function(elem) {
if (arr.includes(elem)) {
return false
} else {
return true
}
}
}