Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Почему данный JS код написан плохо? (https://javascript.ru/forum/project/71550-pochemu-dannyjj-js-kod-napisan-plokho.html)

elrut 28.11.2017 09:13

Почему данный 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, посоветуйте, что почитать, где задания выполнять? Спасибо большое за помощь.

Nexus 28.11.2017 09:44

Цитата:

Сообщение от 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);

рони 28.11.2017 11:39

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));

рони 28.11.2017 11:41

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

itog = bouncer([false, null, 0, NaN, undefined, "",78]);
alert(JSON.stringify(itog));

elrut 28.11.2017 11:59

Спасибо ребят, я понял)


Часовой пояс GMT +3, время: 19:31.