javascript - 如何获取具有非空类名的元素数量
问题描述
示例代码:
console.log(document.querySelectorAll("p[class]").length);
<p class="">Hello, world!</p>
<p class="5">Hello, world!</p>
<p class="9">Hello, world!</p>
<p class="">Hello, world!</p>
我得到4
什么: 我期望什么:2
解决方案
您可以从集合中创建一个数组,以及filter
它是否className
是数字的:
const psWithClass = document.querySelectorAll("p[class]");
const countPsWithNumericClass = [...psWithClass]
.filter(({ className }) => /^\d+$/.test(className))
.length;
console.log(countPsWithNumericClass );
<p class="">Hello, world!</p>
<p class="5">Hello, world!</p>
<p class="9">Hello, world!</p>
<p class="">Hello, world!</p>
你也可以reduce
用来避免创建另一个中间数组,这会更有效率,虽然读起来有点奇怪:
const psWithClass = document.querySelectorAll("p[class]");
const countPsWithNumericClass = [...psWithClass]
.reduce(
(a, { className }) => a + /^\d+$/.test(className),
0
);
console.log(countPsWithNumericClass );
<p class="">Hello, world!</p>
<p class="5">Hello, world!</p>
<p class="9">Hello, world!</p>
<p class="">Hello, world!</p>
或者,根本没有任何中间数组:
const psWithClass = document.querySelectorAll("p[class]");
const countPsWithNumericClass = Array.prototype.reduce.call(
psWithClass,
(a, { className }) => a + /^\d+$/.test(className),
0
);
console.log(countPsWithNumericClass );
<p class="">Hello, world!</p>
<p class="5">Hello, world!</p>
<p class="9">Hello, world!</p>
<p class="">Hello, world!</p>
如果您只关心类名是否不是空字符串,请使用:not([class=''])
:
const psWithNonEmptyClass = document.querySelectorAll("p[class]:not([class=''])");
console.log(psWithNonEmptyClass.length);
<p class="">Hello, world!</p>
<p class="5">Hello, world!</p>
<p class="9">Hello, world!</p>
<p class="">Hello, world!</p>
推荐阅读
- powershell - 在 Active Directory 中更新多个用户 - 国家和经理属性问题
- c++ - 如何在子进程结束后立即捕获它?
- c# - Microsoft Visual Studio 社区 2019 版本 16.8.2。创建新的移动应用程序(Xamarin Forms)项目时出现问题
- python-3.x - 为什么我的第一条机器人消息(通过 REST API)显示在我的第一条线程消息之前?
- php - 带/不带 TRIM 的查询
- runtime-error - “/”应用程序中的服务器错误。运行时错误
- angular - 离子用户界面未显示
- python - 字符串格式未按预期工作
- java - 计算时钟滴答以评估性能
- c++ - Visual Studio 2019 C++ 调试:“符号文件中没有可用的类型信息”