javascript - 如何防止在 JavaScript 数组中保存重复的段落?
问题描述
这是我的代码。我很难弄清楚如何防止将重复数据保存到数组中。基本上,当我单击任何两个段落元素时,段落中包含的文本保存到名为 test.But 的数组中。但是,我希望,当我单击任何段落两次时,文本不能保存到数组中。我想防止任何双重输入。
var test = [];
[...document.querySelectorAll(".container")].forEach(div => div.addEventListener("click", function(e) {
if (e.target.tagName === "P") {
test.push(e.target.textContent);
}
console.log(test);
}));
<div class="container">
<p>
<b>Group:N</b>Code:1234<br/>
<b> Session Type:CS<br/>
<b> Location:Main Hall<br/>
<b>Time:14:00<br/>
<b>Day:Tuesday<br/>
<b>Duration:1hour<br/>
</p>
</div>
<div class="container">
<p>
<b>Group:M</b>Code:98743<br/>
<b> Session Type:NP<br/>
<b> Location:Main Hall2<br/>
<b>Time:11:00<br/>
<b>Day:Monday<br/>
<b>Duration:1hour<br/>
</p>
</div>
解决方案
您只需要检查数组是否已经包含该项目。如果它没有,则push
否则忽略。用于Array.prototype.includes
此。
var test = [];
[...document.querySelectorAll(".container")].forEach(div => div.addEventListener("click", function(e) {
if (e.target.tagName === "P") {
var text = e.target.textContent;
if (!test.includes(text)) // This is the code to stop repeating elements.
test.push(text);
}
console.log(test);
}));
<div class="container">
<p>Paragraph 1</p>
<p>Paragraph 2</p>
<p>Paragraph 3</p>
</div>
推荐阅读
- php - 如何将 cURL 转换为 Guzzle GET
- pandas - 如何使用未识别的 feature.id 绘制带有 folium 和 geoJson 的 Choropleth 地图?
- rxjs - 如何从失败的 forkJoin 请求中获取数据?
- java - java:二十一点游戏缺少返回语句
- node.js - GET 端点返回 404
- python - 使用预训练的权重初始化密集张量流层
- c - 转换为科学计数法
- javascript - 如何创建 cookie 和隐藏 div?
- angular - 为什么单独的“样式”在@Component 装饰器内有一个方括号?
- sql - VBA:ADODB 记录集 - SQL 查询返回值 - 转换为函数中返回的数字