我使用以下代码将数据属性值转换为数字.我希望在所有情况下都获得一个有效的数值或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>

Javascript相关问答推荐

当分配给ts文件中的变量时,验证在HTML文件中不起作用(Angular)

如何使用合并排序方法编写数组排序Polyfill

从所选的select jQuery中删除多个属性

我可以获取所有包含@的超链接,然后在新选项卡中打开它们吗?

使用Angular 17计算从生日日期起的年、月、天

错误:(0,react__WEBPACK_IMPORTED_MODULE_1__.useSYS State)不是函数或其返回值不可迭代

将音频记录从js发送到activx-web服务器以保存到磁盘

如何在react-Router-dom 6中Forking 路由?

以逗号分隔的列表来数组并填充收件箱列表

如何保持子画布元素的1:1宽高比?

创建1:1比例元素,以另一个元素为中心

使用redux-toolet DelivercThunks刷新访问令牌

我在这个黑暗模式按钮上做错了什么?

如何最好地从TypScript中的enum获取值

html + java script!需要帮助来了解为什么我得到(无效的用户名或密码)

保持物品顺序的可变大小物品分配到平衡组的算法

JS:XML insertBefore插入元素

查询参数未在我的Next.js应用路由接口中定义

背景动画让网站摇摇欲坠

如何找到带有特定文本和测试ID的div?