我想对数组中的所有 float 求和
当我在 chrome 控制台中执行此操作时
$("tr.project_hours").find("td.number").map(function(i,v)
{return parseFloat($(v).attr("data-time"))
})
我明白了
[0, 0, 0, 0, 0, 0, 0]
这就是我想要的
但是,在我的代码中我有更多的 $("tr.project_hours") 并且我想分别对它们求和。 所以,我愿意
$("tr.project_hours").each(function(){
row = $(this).find('td.total')
row.html(sumInputsIn($(this).find("td.number").map(function(i,v){
return parseFloat($(v).attr("data-time"))})));
})
('td.total') 是应该显示结果的列。问题是最后的代码在控制台中返回了这个
[0, 0, 0, 0, 0, 0, 0, prevObject: jQuery.fn.jQuery.init[7], context: <tr>]
所以结果就是臭名昭著的 NaN。
为什么我的数组中有 prevObject?我如何通过重构来摆脱它?
最佳答案
在 jQuery 集合上调用 map
的返回类型是另一个 jQuery 集合。如果您只想访问映射中使用的函数的结果,则需要使用 .toArray()
来返回底层数组:
var numbersArray = $("tr.project_hours").find("td.number").map(function(i,v)
{return parseFloat($(v).attr("data-time"))
}).toArray();
关于javascript - Jquery 正在添加 prevObject : to array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14193469/