【问题标题】:How to check array value for NaN using jQuery each function?如何使用 jQuery 每个函数检查 NaN 的数组值?
【发布时间】:2019-08-02 12:36:59
【问题描述】:

我有这些从数据库中获取数据的 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>

谢谢。

【问题讨论】:

标签: javascript jquery each nan


【解决方案1】:

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

const arr = [NaN, 1000, 3000, NaN];
const sum = arr.reduce((acc, num) => acc += num || 0, 0);
console.log(sum);
// 4000

【讨论】:

    【解决方案2】:

    试试这个

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

    【讨论】:

      【解决方案3】:

      只需替换var value = parseFloat($(this).val());

      var value = $(this).val() ? $(this).val() : 0; 行。

      这将解决您的问题。

      【讨论】:

        猜你喜欢
        • 2019-03-13
        • 2020-10-27
        • 1970-01-01
        • 1970-01-01
        • 2013-10-23
        • 1970-01-01
        • 2022-11-02
        • 2021-03-19
        • 1970-01-01
        相关资源
        最近更新 更多