Я пытаюсь написать функцию, которая избавляется от элементов на основе параметра для поиска. Я не уверен, почему это происходит при использовании булевых выражений:
function getRid(array, discardThis) {
if (array.length === 0) {
return []
}
let newArr = array.filter( function (element) {
if (element != discardThis) {
return element;
}
})
return (newArr.length === array.length) ? [] : newArr;
}
getRid([true, true, true, false, true], true);
Функция filter
должна возвращать логическое значение, проверяя, что каждый элемент возвращает true
если он должен быть сохранен и false
если это не так. Пытаться:
function getRid(array, discardThis) {
if (array.length === 0) {
return []
}
let newArr = array.filter( function (element) {
return element != discardThis
}
)
// I'm not clear on this check so I left it,
// but it would make more sense to simply return newArr
return (newArr.length === array.length) ? [] : newArr
}
Все, что вам действительно нужно от вашего кода, следующее.
Фильтр не работал, потому что он ожидал логического значения для того, должен ли элемент храниться, вместо этого вы дали ему значение, которое в этом случае нарушило фильтр.
примечание: лучшее имя будет
exclude
function getRid(array, discardThis) {
return array.filter(function (element) {
return element != discardThis
})
}
console.log(
getRid([true, true, true, false, true], true)
)
<script src="https://codepen.io/synthet1c/pen/KyQQmL.js"></script>