reduce方法不适用于jQuery选择器返回对象?如何统计const变量中勾选的复选框数量
问题解答
关于reduce是否可作用于jQuery选择器返回结果
jQuery选择器返回的是类数组的jQuery实例对象,并非原生JavaScript数组,原型链上没有部署Array的reduce方法,所以直接调用会报错。
同时你原有代码还存在运算符优先级错误:===优先级高于+,原有写法会先计算true + currentTotal,再和$(item).prop('checked')做全等判断,完全不符合计数逻辑。
可行实现方案
方案1:转原生数组后使用reduce
先将jQuery对象转成原生数组,再调用reduce方法,修正后代码如下:
const blocksUserAddLineCBs = $(".useradd"+blockIdEnding); const blocksUserAddLinesActiveCBCounter = [...blocksUserAddLineCBs].reduce((currentTotal, item) => { return currentTotal + $(item).prop('checked') }, 0);
也可以用Array.from(blocksUserAddLineCBs)替代扩展运算符完成转换。
方案2:直接使用jQuery的:checked选择器(更简洁)
不需要手动遍历计数,直接通过选择器筛选已勾选的元素,取返回结果的length属性即可:
const blocksUserAddLinesActiveCBCounter = $(`.useradd${blockIdEnding}:checked`).length;
内容的提问来源于stack exchange,提问作者lxg95
相关产品推荐
相关产品推荐

