从数组中删除一个元素后如何检查

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 从数组中删除前一个元素

如何从数组中删除重复的数字?

javascript中,知道一个值,如何删除数组中的这个值的元素。

在JAVA中如何从数组中删除一个元素

如何检查数组中的@(at),并在检查后删除此符号[重复]

Javascript中如何删除数组中指定元素后形成新的数组