Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Исключение нулевых данных в массиве (https://javascript.ru/forum/dom-window/37128-isklyuchenie-nulevykh-dannykh-v-massive.html)

weber 08.04.2013 17:52

Исключение нулевых данных в массиве
 
Всем привет, встала одна проблема с JS, имеется массив с данными, которые разбираются в цикле, нужно их перемножить между собой, но попадаются ключи равные нулю и тогда умножение не работает. Как можно в цикле указать чтобы пропускались такие значения?

небольшая иллюстрация моего кода, чтобы было понятней о чем речь:

var curr_string = $('.select option:selected');
var price = 0;
$.each(curr_string, function() {
    price += parseFloat($(this).attr('price'))
}


в данный момент такой скрипт работает и суммирует значения, но нужно изменить на умножение, но возникает вышеописанная проблема и в результате получаю ноль.

Как можно в таком цикле пропускать исключить нулевые значения? Или может вообще по другому стоит сделать?

Octane 08.04.2013 18:29

http://javascript.ru/if

weber 08.04.2013 22:38

условие if я пробовал, но тоже результата нет. Может чего-то не так пишу?

$.each(curr_string, function() {
            if ($(this).attr('price') != 0) {
                price *= parseFloat($(this).attr('price'));
            }
        });


в результате просто ничего не получаю

Octane 08.04.2013 22:59

Надеюсь при умножении начальное значение не 0? :D

nerv_ 09.04.2013 00:59

price *= +$(this).attr('price') || 1;


Цитата:

Сообщение от Octane
Надеюсь при умножении начальное значение не 0?

кто знает :)

weber 09.04.2013 01:28

Цитата:

Сообщение от Octane (Сообщение 244914)
Надеюсь при умножении начальное значение не 0? :D

я конечно не силен в программировании, но математику первого класса пока не забыл;)

начальное значение было 1.

Методом проб и ошибок выяснил, что просто нужно было писать вот так:

var price_val = $(this).attr('price');
if (price_val > 0) {
      price *= parseFloat(price_val);
}


то есть заменить знак "не равно" на "больше". Не знаю почему "!=" не сработало, но это уже не так важно.

В любом случае спасибо за участие:thanks:


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