Arrayに書き込み可能な有用な関数「slice」


Array.prototype.slice()


  • mdn定義
    "The slice() method returns a shallow copy of a portion of an array into a new array object selected from start to end (end not included) where start and end represent the index of items in that array. The original array will not be modified."

  • =>slice()メソッドは、既存の配列の一部をコピーすることによって、既存の配列の開始からend(endは含まない)までの選択項目を含む新しい配列を返します.既存のレイアウトは変更されません.
    (startとendはプロジェクトのindexを表します.)

  • =>簡単に言えば、「アレイの一部をコピーした新しいアレイを返します.」考えてみればいい.

  • ps ) splice VS slice

  • spliceは既存の配列を変更して既存の配列を返し、sliceは既存の配列を保持し、新しい配列を返します.

  • https://velog.io/@yebb/JavaScript-Array%EC%97%90-%EC%93%B8-%EC%88%98-%EC%9E%88%EB%8A%94-%EC%9C%A0%EC%9A%A9%ED%95%9C-%ED%95%A8%EC%88%98-splice
  • Syntax

    slice()
    slice(start) //
    slice(start, end)

  • start (optional)
  • 負数を使用して、左右に並んだ末尾から逆コピーを開始できます.たとえばarr.slice(-2)を行うと、配列の末尾から最後の2つの項目を抽出した配列が返されます.
  • startが定義されていない場合、sliceメソッドは0番インデックスから開始します.
  • startが配列長より大きい場合は、空の配列を返します.

  • end (optional)

  • sliceはendを含まずに抽出され、例えばslice(1,4)は、4番目のindexを除く1、2、3番目のindex項目を含む配列を返す.

  • endは負数も使用でき,この場合は配列の末尾からカウントダウンと考えられる.たとえば、slice(2,-1)は、配列の2番目のインデックスから始まり、配列の最後のインデックスから1つを除く項目に抽出された配列を返します.

  • endが配列の長さよりも省略されたり大きくなったりすると、sliceは配列の末尾に抽出されます.
  • 📌はい。

    
    let fruits = ['🍌','🍋','🍎'];
    
    
    //Q. start와 end 모두 지정하지 않으면?
    const fruits0 = fruits.slice();
    console.log(fruits0); //output: ['🍌', '🍋', '🍎'] 
    //-> start가 없으므로 0번 index부터 시작하고 end도 없으므로 배열의 끝까지 추출된 배열을 반환한다. 
    
    
    //Q. 바나나와 레몬만 담긴 새로운 배열을 만들고 싶다면?
    //방법 1)
    const fruits1 = fruits.slice(0,2);
    console.log(fruits1); //output: ['🍌', '🍋']
    //방법 2)
    const fruits2 = fruits.slice(0,-1);
    console.log(fruits2); //output: ['🍌', '🍋']
    
    
    //Q. 사과만 담긴 배열을 만들고 싶다면?
    //방법 1)
    const fruits3 = fruits.slice(-1);
    console.log(fruits3); //output: ['🍎']
    //방법 2)
    const fruits4 = fruits.slice(2);
    console.log(fruits4); //output: ['🍎']
    
    リファレンス
    https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/slice