TIL 18 | JavaScript Array


https://youtu.be/yOdAVDuHUKQ
『DREAMCODINGBY ELLY』のYouTube講座を見て整理した内容です

Array


Arrayは資料構造の一つです.
資料構造とは、似たような種類のデータを組み合わせて保存することである.資料構造では、データをどのように格納するか、どのような形式で格納するかによって、さまざまなタイプがあります.
アレイ
  • indexは0から始まります.
  • スキームでは同じタイプのデータしか入れません!
    (JavaScriptは動的タイプ化言語、すなわちタイプが動的に定義されているため、異なるタイプのデータを1つの場所に置くことができますが、このように書かないでください!)😇)
  • インデックス、アクセス可能配列...だから挿入も削除も便利!
  • 1. Declaration


    配列を宣言する方法は2つあります.

    ① new

    newというキーワードを使用して、オブジェクトを作成するように配列を宣言します.
    const arr1 = new Array();

    ②[かっこ]

    [대괄호]を使用して配列にデータを入れます.
    const arr2 = [1,2];

    2. Index position


    列の中の項目はIndexを通じて近づくことができます.
    const fruits = ['🍎', '🍌'];
    console.log(fruits); // (2)["🍎", "🍌"]
    console.log(fruits.length); //2
    console.log(fruits[0]); //🍎
    console.log(fruits[1]); //🍌
    
    //만약 그 밖에 있는 index에 접근한다면?
    console.log(fruits[2]); //undefined  ..왜냐면 아무것도 들어있지 않기 때문이다.
  • objectでfruits['key']という文字列を使用すると、
    →該当する値を取得できます.
  • に示すように、arrayはindex(数字)をこのように伝達する.
    →indexに対応する値を取得できます.
  • 🤔 外部のindexを呼び出すとundefinedと表示されますが、最後のインデックスにどのようにアクセスしますか?
    →並べられたlengthに-1を加えて、最後のデータに近づきます.
    console.log(fruits[fruits.length - 1]); //🍌

    3. Looping over an array


    アレイ内のすべてのデータを回転して出力します.

    ① for

    for (let i = 0; i < fruits.length-1; i++) {
      console.log(fruits[i]);
    }
    
    //🍎
    //🍌

    ② for of

    for (let fruit of fruits) {
      console.log(fruit);
    }
    
    //🍎
    //🍌

    ③ forEach


    各配列の値は、私が渡した関数を出力します.
    fruits.forEach(function(fruit) {
      console.log(fruit);
    });
    
    //🍎
    //🍌
    このように名前のない関数はarrow関数でより簡単になります.
    fruits.forEach((fruit) => console.log(fruit));

    4. Addition, deletion, copy


    ① push


    push : add an item to the end
    fruits.push('🍓','🍑');
    console.log(fruits); //(4)["🍎","🍌","🍓","🍑"]

    ② pop


    pop : remove an item from the end
    fruits.pop(); //뒤에서부터 하나가 없어진다.
    fruits.pop(); //또 하나가 뒤에서부터 없어진다.
    console.log(fruits); //(2)["🍎","🍌"]

    ③ unshift


    unshift : add an item to the begining
    fruits.unshift('🍓','🍋');
    console.log(fruits); //(4)["🍓","🍋","🍎","🍌"]

    ④ shift


    shift : remove an item from the begining
    fruits.shift(); //앞에서부터 하나가 없어진다.
    fruits.shift(); //또 하나가 앞에서부터 없어진다.
    console.log(fruits); //(2)["🍎","🍌"]
    📒 NOTE! shift, unshift are much much slower than pop, push
    →前から追加したり、前から削除したりしてデータ全体が移動するので、fruits[index]shiftの方が遅く、逆にunshiftpopのように一番後ろからのアクセスが早い!

    ⑤ splice


    splice:指定した位置(位置)からインデックス位置でデータを削除する
    splice(最初のインデックス、削除数、追加データ)
    fruits.push("🍓","🍑","🍋"); //일단 배열에 과일을 좀 더 추가해보자
    console.log(fruits); //(5)["🍎","🍌","🍓","🍑","🍋"]
    
    fruits.splice(1,1); //1번 index(🍌) 부터 하나만 지우기
    console.log(fruits); //(4)["🍎","🍓","🍑","🍋"]
    
    fruits.splice(1,1,'🍏','🍉');  //1번 index(🍓) 부터 하나만 지우고나서, 그 자리에! 🍏,🍉을 넣어준다.
    console.log(fruits); //(5)["🍎","🍏","🍉","🍑","🍋"]
    
    fruits.splice(1,0,'🍐','🥥'); //1번 index(🍏) 부터 지우는건 하나도 하지않고, 🍐,🥥 만 추가한다.
    console.log(fruits); //(7)["🍎","🍏","🍐","🥥","🍉","🍑","🍋"]
    
    fruits.splice(1); //몇개 지울건지 안써주면 1번 index 부터 뒤로 싹 지워진다.
    console.log(fruits); //(2)["🍎","🍏"]

    ⑥ concat


    concat:combineの2つの配列の2つの配列を組み合わせて
    const fruits2 = ['🍐','🥥'];
    const newFruits = fruits.concat(fruits2); 
    // fruits에 fruits2를  합해서 묶은 배열이 return 되고, 이것을 newFruits로 받는다.
    
    console.log(newFruits); //(4)["🍎","🍏","🍐","🥥"]

    5. Searching


    find the indexチェック、検索可能なAPI

    ① indexOf


    いくつかのインデックスで特定できます.でも、前から初めて会ったことを教えてあげます.
  • は、最初に会ったインデックス値を通知します.
  • は、ない値を加算するとpushを出力する.
  • const fruits = ["🍎","🍏","🍉","🍑","🍋"]
    
    console.log(fruits.indexOf('🍎')); //0
    console.log(fruits.indexOf('🍉')); //2
    console.log(fruits.indexOf('🥑')); //-1   ..이렇게 없는 값을 출력하면 -1이 출력된다.

    ② lastIndexOf


    いくつかのインデックスで特定できます.でも、最後の中身を教えてあげます.
  • の最後の対応するインデックス値.
  • console.log(fruits); //(5)["🍎","🍏","🍉","🍑","🍋"]
    
    fruits.push('🍎'); // 만약 똑같은 🍎가 뒤에 또 있다면?
    console.log(fruits.lastIndexOf('🍎')); //5

    ③ includes


    配列に含めるかどうかを決定できます.
  • がある場合は-1
  • がない場合、true
  • console.log(fruits.includes('🍑')); //true
    console.log(fruits.includes('🥑')); //false