Есть много способов удаления элементов из массива в JavaScript, но какой самый простой способ удалить все ложные значения из массива? Для того, чтобы ответить на этот вопрос, мы посмотрим на то, что правда против фальсифицированных ценностях и типа принуждения в контексте скрипты алгоритма.
Алгоритм Инструкции
Предоставил тестовые случаи
Bouncer ([7, ATE »," ", false, 9])должен вернуться[7, «ATE», 9]ОтказBouncer ("А", "B", "C"])должен вернуться[«А», «B», «C»]ОтказВышибала (false, null, 0, nan, undefined, "" "])должен вернуться[]ОтказBouncer ([1, NULL, NAN, 2, undefined])должен вернуться[1, 2]Отказ
Решение № 1: .Filter () и Boolean ()
Педак
Понимание проблемы : У нас есть один вход, массив. Наша цель – удалить все фальсифицировать значения из массива, затем верните массив.
Хорошие люди на FreeCodeCamp сообщили нам, что фальсифицированные значения в JavaScript являются ложь , null , 0 , “” , undefined и Нан Отказ
Они также упали на нас главную подсказку для нас! Они предлагают преобразовывать каждое значение массива в логическое значение для достижения этой проблемы. Я думаю, что это отличный намек!
Примеры/тестовые случаи : Наши предоставляемые испытательные случаи показывают нам, что если входной массив содержит только значение фальсификации, то мы должны просто вернуть пустой массив. Это довольно просто.
Структура данных : Мы собираемся придерживаться массива здесь.
Давайте поговорим о .Filter () :
.Filter () Создает новый массив со всеми элементами, которые передают тест, реализованный предоставленной функцией.
Другими словами, .Filter () Проходит каждый элемент в массиве и сохраняет все элементы, которые проходят определенный тест. Все элементы в массиве, которые отказались от того, что тест отфильтровывают – они удалены.
Например, если у нас был массив номеров, и мы только хотели, чтобы цифры больше 100, мы могли бы использовать .Filter () достичь этого:
let numbers = [4, 56, 78, 99, 101, 150, 299, 300]numbers.filter(number => number > 100)// returns [ 101, 150, 299, 300 ]
Давайте поговорим о намекании преобразования каждого элемента до логика. Это хороший намек, потому что мы можем использовать .Filter () Чтобы вернуть массив только правдивыми ценностями.
Мы собираемся достичь этого через КОНЦЕРИЗАЦИЯ Тип JavaScript Отказ
JavaScript дает нам полезные функции для преобразования одного типа данных в другое. Строка () Преобразуется в строку, Номер () преобразуется на номер, а Boolean () преобразуется в логию.
Например:
String(1234)// returns "1234"
Number("47")// returns 47Boolean("meow")// returns trueBoolean () Функция мы будем реализовывать с этой задачей. Если аргумент предоставлен Boolean () это правда, то Boolean () вернется истинный. Если аргумент предоставлен Boolean () это ложно, то Boolean () вернется ложь Отказ
Это полезно для нас, потому что мы знаем из инструкций, которые только ложь , null , 0 , “” , undefined и Нан ложно в JavaScript. Каждое другое значение – это правда. Зная, что, если мы конвертируем каждое значение в входном массиве на логическое значение, мы можем удалить все элементы, которые оценивают в ложь И это будет удовлетворять требованиям к этой проблеме.
Алгоритм :
- Определите, какие значения в
arrявляются фальсию. - Удалите все фальсифицированные значения.
- Верните новый массив, который содержит только правдивые значения.
Код : Увидеть ниже!
Без комментариев и удаление локальной переменной:
Если у вас есть другие решения и/или предложения, пожалуйста, поделитесь в комментариях!
Эта статья является частью сценариев алгоритма серии FreeCodecamp.
Эта статья Ссылки FreeCodecamp Основные алгоритмы сценариев: Falsy Bouncer.
Вы можете следовать за мной на Средний , LinkedIn и Github !