JS 배열 지정 값 삭제 상용 방법 상세 설명

1.배열 의 모든 지정 값 삭제
먼저 위험한 방식 을 본다.

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <script type="text/javascript">
      window.onload = function() {
        var arr = [1, 1, 2, 2, 3, 3, 4, 4, 5, 5];
        console.log(`    :${arr}`);
        arr.forEach((item, i) => {
          if (item == 3) {
            arr.splice(i, 1); //     i   ,    1    
          }
        })
        console.log(`       :${arr}`);
      }
    </script>
  </body>
</html>
출력 결과:

출력 결과 에 서 는 3 만 삭 제 했 습 니 다.이것 은 splice 방법 으로 배열 의 지정 값 을 삭제 한 후에 배열 이 바 뀌 었 기 때 문 입 니 다.다음 값 은 앞으로 한 위 치 를 옮 겼 습 니 다.다음 순환 에서 뒤의 3 의 하 표 는 원래 의 5 에서 4 로 바 뀌 었 습 니 다.이 로 인해 삭제 작업 을 한 다음 에 5 로 표 시 된 값 을 찾 을 때 뒤의 값 3 을 찾 을 수 없습니다.그리고 값 이 4 인 요 소 를 이어서 옮 겨 다 니 며 삭제 할 값 이 1 개가 아 닐 때 이런 옮 겨 다 니 며 삭제 하 는 것 은 위험한 방식 이다.
1.splice 방법 으로 반복 해서 옮 겨 다 니 는 방식 으로 지정 한 값 을 삭제 하면 보험 의 방식 은 역방향 으로 옮 겨 다 니 는 것 입 니 다.

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <script type="text/javascript">
      window.onload = function() {
        var arr = [1, 1, 2, 2, 3, 3, 4, 4, 5, 5];
        console.log(`    :${arr}`);
        for (let i = arr.length - 1; i > -1; i--) {
          if (arr[i] == 3) {
            arr.splice(i, 1);
          }
        }
        console.log(`       :${arr}`);
      }
    </script>
  </body>
</html>
출력 결과:

2.filter 방법 으로 지정 한 값 을 걸 러 내기:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <script type="text/javascript">
      window.onload = function() {
        var arr = [1, 1, 2, 2, 3, 3, 4, 4, 5, 5];
        arr = arr.filter(item => item != 3); //       3,     
        console.log(`filter         :${arr}`);
      }
    </script>
  </body>
</html>
출력 결과:

메모:filter 방법 은 원래 배열 을 바 꾸 지 않 고 새 배열 로 돌아 갑 니 다.
2.지정 한 값 삭제
삭제 할 값 이 하나 밖 에 없 는 것 이 확실 하 다 면,검색 삭제 외 에 도 some 방법 을 사용 할 수 있 습 니 다.

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <script type="text/javascript">
      window.onload = function() {
        var arr = [1, 2, 3, 4, 5];
        arr.some((item, i) => {
          if (item == 2) {
            arr.splice(i, 1);
            return true
          }
        })
        console.log(`       :${arr}`);
      }
    </script>
  </body>
</html>
출력 결과:

메모:some 방법 은 조건 에 맞 는 값 을 찾 아 수 동 으로 true 로 돌아 간 후 다시 옮 겨 다 니 지 않 습 니 다(some 를 foreach 로 바 꾸 면 return 은 작 동 하지 않 습 니 다).
그 밖 에 findIndex 방법 도 사용 할 수 있 습 니 다.

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <script type="text/javascript">
      window.onload = function() {
        var arr = [1, 2, 3, 4, 5];
        console.log(`    :${arr}`);
        var a = arr.findIndex(item => item == 3);
        arr.splice(a, 1);
        console.log(`       :${arr}`);
      }
    </script>
  </body>
</html>
출력 결과:

메모:findIndex 는 첫 번 째 조건 에 맞 는 아래 표 만 찾 고 찾 지 못 하면 되 돌아 갑 니 다-1;
자세 한 내용 은 MDN 에서 배열 에 대한 소 개 를 보십시오.
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기