Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.11.2017, 09:13
Новичок на форуме
Отправить личное сообщение для elrut Посмотреть профиль Найти все сообщения от elrut
 
Регистрация: 28.11.2017
Сообщений: 2

Почему данный JS код написан плохо?
Всем привет, я недавно начал изучать JS и выполняю по немногу различные задания, написал вот такой скрипт:
function bouncer(arr) {
    function isBigEnough(value) {
        if (value !== undefined || null || 0 || "" || NaN || false) {
            return value;
        }
    }
    var b = arr.filter(isBigEnough);
    return b;
}

itog = bouncer([false, null, 0, NaN, undefined, "",78]);
console.log(itog);

Подскажите пожалуйста, почему этот код написан плохо?
И у кого есть опыт изучения JS, посоветуйте, что почитать, где задания выполнять? Спасибо большое за помощь.
Ответить с цитированием
  #2 (permalink)  
Старый 28.11.2017, 09:44
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

Сообщение от elrut
почему этот код написан плохо
Что вы пытаетесь проверить условием в строке 3, является ли значение числом больше нуля?
Есть ли смысл создавать именованную функцию в функции "bouncer", почему не использовать анонимную?
Смысл в создании переменной "b" в функции "bouncer" точно отсутствует, можно сразу вернуть результат фильтрации массива.
Методу "filter" нужно возвращать не значение, а истину или лож, иными словами можно сразу вернуть результат блока условия.

function bouncer(arr){
    return arr.filter(function(v){
		return (+v>0 && v!==true);
	});
}

itog = bouncer([false, null, 0, NaN, undefined, "",78]);
console.log(itog);

Последний раз редактировалось Nexus, 28.11.2017 в 09:49. Причина: Забыл про true
Ответить с цитированием
  #3 (permalink)  
Старый 28.11.2017, 11:39
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

elrut,
function bouncer(arr) {
    function isBigEnough(value) {
        if (value !== undefined && value !== null && value !==0 && value !== "" && !isNaN(value) && value !== false) {
            return true;
        };
       return false;
    }
    var b = arr.filter(isBigEnough);
    return b;
}

itog = bouncer([false, null, 0, NaN, undefined, "",78]);
alert(JSON.stringify(itog));
Ответить с цитированием
  #4 (permalink)  
Старый 28.11.2017, 11:41
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109


function bouncer(arr){
    return arr.filter(function(v){
    return (v && v === +v);
  });
}

itog = bouncer([false, null, 0, NaN, undefined, "",78]);
alert(JSON.stringify(itog));
Ответить с цитированием
  #5 (permalink)  
Старый 28.11.2017, 11:59
Новичок на форуме
Отправить личное сообщение для elrut Посмотреть профиль Найти все сообщения от elrut
 
Регистрация: 28.11.2017
Сообщений: 2

Спасибо ребят, я понял)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JS код в картинку. mrKot Общие вопросы Javascript 5 26.04.2015 20:28
Почему не работает код sean88 Общие вопросы Javascript 1 04.11.2014 16:10
Скажите пожалуйста Почему код не работает Hayko jQuery 3 02.11.2014 00:54
Почему не работатет код?! WitaliG Ваши сайты и скрипты 5 17.08.2010 09:30
Почему это работает? (инклуд JS в JS) Василий Б. Общие вопросы Javascript 4 11.06.2010 12:41