NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 학습
  • 매뉴얼

    학습


    JavaScript JavaScript에서 배열의 값을 삭제하고, 삭제한 위치에 새로운 내용을 추가하는 방법. (with Array.prototy…

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. React+Typescript 환경에서 Antd의 Select를 사용하는데요. 실제 바인딩해야 할 데이타는 [ { key: rawid, value: name } ] 이렇게 생겼습니다. 여기서 문제는 Select에서 Option을 클릭하면 onChange 이벤트가 발생하고, 여기서 선택한 Option의 내용을 확인할 수 있습니다. 이 때 key, value 형태가 아닌 단순히 value의 String[]으로 넘어온다는 것입니다. 그렇다보니 rawid로 다시 조회해야 하는 경우 문제가 발생합니다. 그래서, Option을 가져오는 Query에서 key, value를 가져오고 이걸 별도의 setState에 담아둔 후 QueryItems와 SelectItems를 반복하면서 다시 key를 할당해주도록 했습니다.

     

    Array.prototype.splice()
    splice() 메서드는 배열의 기존 요소를 삭제 또는 교체하거나 새 요소를 추가하여 배열의 내용을 변경합니다.

    const months = ['Jan', 'March', 'April', 'June'];
    months.splice(1, 0, 'Feb');
    // Inserts at index 1
    console.log(months);
    // Expected output: Array ["Jan", "Feb", "March", "April", "June"]
    
    months.splice(4, 1, 'May');
    // Replaces 1 element at index 4
    console.log(months);
    // Expected output: Array ["Jan", "Feb", "March", "April", "May"]

     

    Syntax

    array.splice(start[, deleteCount[, item1[, item2[, ...]]]])

     

    Parameters

    1. start: 배열의 변경을 시작할 인덱스입니다. 배열의 길이보다 큰 값이라면 실제 시작 인덱스는 배열의 길이로 설정됩니다. 음수인 경우 배열의 끝에서부터 요소를 세어나갑니다(원점 -1, 즉 -n이면 요소 끝의 n번째 요소를 가리키며 array.length - n번째 인덱스와 같음). 값의 절대값이 배열의 길이 보다 큰 경우 0으로 설정됩니다.
    2. deleteCount (Optional): 배열에서 제거할 요소의 수입니다. deleteCount를 생략하거나 값이 array.length - start보다 크면 start부터의 모든 요소를 제거합니다. deleteCount가 0 이하라면 어떤 요소도 제거하지 않습니다. 이 때는 최소한 하나의 새로운 요소를 지정해야 합니다.
    3. item1, item2, <em>...</em> (Optional): 배열에 추가할 요소입니다. 아무 요소도 지정하지 않으면 splice()는 요소를 제거하기만 합니다.
    4. 반환 값: 제거한 요소를 담은 배열. 하나의 요소만 제거한 경우 길이가 1인 배열을 반환합니다. 아무 값도 제거하지 않았으면 빈 배열을 반환합니다.
    5. 설명: 만약 제거할 요소의 수와 추가할 요소의 수가 다른 경우 배열의 길이는 달라집니다.

     

    Examples

    하나도 제거하지 않고, 2번 인덱스에 "drum" 추가

    var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
    var removed = myFish.splice(2, 0, 'drum');
    
    // myFish is ["angel", "clown", "drum", "mandarin", "sturgeon"]
    // removed is [], no elements removed


    하나도 제거하지 않고, 2번 인덱스에 "drum"과 "guitar" 추가

    var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
    var removed = myFish.splice(2, 0, 'drum', 'guitar');
    
    // myFish is ["angel", "clown", "drum", "guitar", "mandarin", "sturgeon"]
    // removed is [], no elements removed


    3번 인덱스에서 한 개 요소 제거

    var myFish = ['angel', 'clown', 'drum', 'mandarin', 'sturgeon'];
    var removed = myFish.splice(3, 1);
    
    // removed is ["mandarin"]
    // myFish is ["angel", "clown", "drum", "sturgeon"]


    2번 인덱스에서 한 개 요소 제거하고 "trumpet" 추가

    var myFish = ['angel', 'clown', 'drum', 'sturgeon'];
    var removed = myFish.splice(2, 1, 'trumpet');
    
    // myFish is ["angel", "clown", "trumpet", "sturgeon"]
    // removed is ["drum"]


    0번 인덱스에서 두 개 요소 제거하고 "parrot", "anemone", "blue" 추가

    var myFish = ['angel', 'clown', 'trumpet', 'sturgeon'];
    var removed = myFish.splice(0, 2, 'parrot', 'anemone', 'blue');
    
    // myFish is ["parrot", "anemone", "blue", "trumpet", "sturgeon"]
    // removed is ["angel", "clown"]


    2번 인덱스에서 두 개 요소 제거

    var myFish = ['parrot', 'anemone', 'blue', 'trumpet', 'sturgeon'];
    var removed = myFish.splice(myFish.length - 3, 2);
    
    // myFish is ["parrot", "anemone", "sturgeon"]
    // removed is ["blue", "trumpet"]


    -2번 인덱스에서 한 개 요소 제거

    var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
    var removed = myFish.splice(-2, 1);
    
    // myFish is ["angel", "clown", "sturgeon"]
    // removed is ["mandarin"]


    2번 인덱스를 포함해서 이후의 모든 요소 제거

    var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
    var removed = myFish.splice(2);
    
    // myFish is ["angel", "clown"]
    // removed is ["mandarin", "sturgeon"]

     

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    댓글목록

    등록된 댓글이 없습니다.