从数组中删除一个元素后如何检查
Posted
技术标签:
【中文标题】从数组中删除一个元素后如何检查【英文标题】:how to check after deleting one element from array 【发布时间】:2022-01-10 08:09:12 【问题描述】:您好,我创建了一个从另一个数组中删除一个数组的 pragam。我认为它工作得很好,但是如果我同时输入 2 个相同的值,由于 splice 函数的第二个参数,它只会删除一个值。如果我的代码下面还有其他数字,我如何在再次删除元素后检查。
const arr1 = [1, 2, 2, 3, 5, 2, 3, 7];
const arr2 = [2, 3];
let countArr = [];
for (let i = 0; i < arr2.length; i++)
for (let j = 0; j <= arr1.length; j++)
if (arr1[j] === arr2[i])
arr1.splice(j, 1);
console.log(arr1);
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script src="demo.js"></script>
</body>
</html>
【问题讨论】:
想想当您使用splice
删除一个元素时,数组会发生什么以及您在数组中的位置。也许尝试添加console.log
调用或使用调试器来帮助您了解发生了什么。
【参考方案1】:
这里很重要,如果数组仍然具有该值,您可以使用 2 个嵌套 if 条件再次检查它
const arr1 = [1,2,2,3,5,2,3,7];
const arr2 = [2, 3];
for (let i = 0; i < arr2.length;i++)
for (let j = 0; j < arr1.length; j++)
if (arr1[j] === arr2[i])
arr1.splice(j, 1)
if (arr1[j] === arr2[i])
arr1.splice(j, 1)
或者您可以在开始循环之前使用 set 删除数组的任何重复值 在这里,您可以在 MDN 文档中阅读更多关于 sets 的信息
【讨论】:
谢谢你我明白了,但我认为它会破坏不要重复代码原则。 如您所见,我还提到它在循环之前使用集合从数组中删除任何重复值,您也可以尝试避免重复以上是关于从数组中删除一个元素后如何检查的主要内容,如果未能解决你的问题,请参考以下文章
if statement == true 从数组中删除前一个元素