如何使用jQuery每个函数检查NaN的数组值?

时间:2019-03-12 05:29:24

标签: javascript jquery each nan

我有这些HTML代码可以从数据库中获取数据。我将数组设置为HTML输入。

HTML代码

<table>
    <thead>
        <tr>
            <th>Category</th>
            <th>January</th>
            <th>February</th>
        </tr> 
    </thead>
    <tbody>
        <?php
        $sql = DB::getInstance()->FetchArray("select * from table");
        if(count($sql) > 0)
        {
            foreach($sql as $row)
            {
                $i = 0;
                if($i == 0)
                {?>
                    <tr>
                        <td><input type="text" class="cat1" id="cat1" name="cat1[]" value="<?php echo $row['CATEGORY']; ?>" placeholder="" readonly></td>
                        <td><input type="text" class="jan1" id="jan1" name="jan1[]" value="<?php echo (($row['MONTH']=='JANUARY')? $row['TOTAL']:''); ?>" placeholder="" readonly></td>
                        <td><input type="text" class="feb1" id="feb1" name="feb1[]" value="<?php echo (($row['MONTH']=='FEBRUARY')? $row['TOTAL']:''); ?>" placeholder="" readonly></td>
                    </tr> 
                <?php
                }
                else
                {?>
                    <tr>
                        <td></td>
                        <td><input type="text" class="jan1" id="jan1" name="jan1[]" value="<?php echo (($row['MONTH']=='JANUARY')? $row['TOTAL']:''); ?>" placeholder="" readonly></td>
                        <td><input type="text" class="feb1" id="feb1" name="feb1[]" value="<?php echo (($row['MONTH']=='FEBRUARY')? $row['TOTAL']:''); ?>" placeholder="" readonly></td>
                    </tr>
                <?php
                }
                $i++;
        }
        ?>
        <tr>
            <td colspan="2" style="text-align:right;">Total</td>
            <td><input type="text" class="form-control inputnumberwith2decimals total_jan1" id="total_jan1" name="" value="" placeholder="" readonly></td>
            <td><input type="text" class="form-control inputnumberwith2decimals total_feb1" id="total_feb1" name="" value="" placeholder="" readonly></td> 
        </tr>
    </tbody> 
</table>

jan1 []的值在console.log中显示为

NaN
1000
3000
NaN

当我尝试对jan1 []的总数求和时,输出显示为NaN,因为某些数组值为NaN。如何将NaN值设置为0并进行总和计算?

我想要实现的是总结如下值

CATEGORY        JANUARY     FEBRUARY
BANANA          NaN         NaN
                1000        NaN
                2000        NaN
                NaN         NaN

TOTAL           3000        0

这是jQuery的代码。

<script>
    $(document).ready(function(){
        var sum_jan1 = parseFloat(0);
        $(".jan1").each(function(){
            var value = parseFloat($(this).val());
            sum_jan1 += value;
        });
        $('#total_jan1').val(sum_jan1);
    });
</script>

谢谢。

2 个答案:

答案 0 :(得分:4)

您只需要在sum函数中将NaN值转换为0。以下是使用reduce的示例:

const arr = [NaN, 1000, 3000, NaN];

let sum = arr.reduce((acc, num) => acc += num ? num : 0, 0);
console.log(sum);
// 4000

答案 1 :(得分:3)

尝试一下

<script>
$(document).ready(function(){
    var sum_jan1 = parseFloat(0);
    $(".jan1").each(function(){
        var value = parseFloat($(this).val());
        sum_jan1 += value?value:0;
    });
    $('#total_jan1').val(sum_jan1);
});