我使用以下代码将数据属性值转换为数字.我希望在所有情况下都获得一个有效的数值或0.例如,如果数据属性值为空(""),则在这种情况下我需要0.这样做的目的是避免获得NaN,因为我在计算中使用了结果.
Number($("td[id^='tdCumulativeUnderOverSpendPrevious']").data("val") || 0);
我使用以下代码将数据属性值转换为数字.我希望在所有情况下都获得一个有效的数值或0.例如,如果数据属性值为空(""),则在这种情况下我需要0.这样做的目的是避免获得NaN,因为我在计算中使用了结果.
Number($("td[id^='tdCumulativeUnderOverSpendPrevious']").data("val") || 0);
我建议把|| 0
移到Number()
呼叫的外面.您希望将元素的数据转换为数字,因此只需将其传递给Number()
即可.如果无法解析该值,Number()
将返回NaN
,只有到那时,您才会想要将整个值更改为0
.
在Number()
调用中使用|| 0
可能会产生意想不到的结果,这取决于它会将任何falsy值更改为零,而不仅仅是无法转换为数字的值.
另外,考虑使用parseFloat()
而不是Number()
.Number()
将转换任何可能转换的值,但parseFloat()
更严格.例如,Number(true)
是1
,但parseFloat(true)
是NaN
.
以下是我将使用的代码:
// set data to number
$('div').data('val', '100')
const num1 = parseFloat($('div').data('val')) || 0;
console.log(num1);
// set data to not a number
$('div').data('val', 'hello')
const num2 = parseFloat($('div').data('val')) || 0;
console.log(num2);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div></div>