有用なJS高次関数


有用なJavaScript配列メソッドの高次関数

  • forEach, map
  • find, filter
  • reduce
  • sort
  • some, every


  • forEach, map


    forEach


    配列内の各要素に対して、指定されたコールバック関数をそれぞれ実行します.
    arr.forEach(callback(currentvalue,index,array))
    
    const arr = ['a','b','c'];
    
    arr.forEach((element,index)=> console.log(element,index));
    
    // "a" 0
    // "b" 1
    // "c" 2

    map


    配列内の各要素に対して実行されるコールバック関数の結果を収集することで、新しい配列を返します.
    foreachに似ていて、
    forEachはundefinedを返しますが、mapは新しい配列を返します.
    arr.map(callback(currentvalue,index,array))
    
    const arr = [1,2,3,4];
    
    console.log(arr.map((element) => element*2));
    
    // [2,4,6,8];

    find, filter


    find


    指定したコールバック関数を満たす最初の要素の値を返します.インデックスの値を決定するにはfindIndexを使用します.
    arr.find(callback(element,index,array))
    
    const arr = [6,3,11,24];
    
    const found = arr.find((element)=> element>10);
    
    console.log(found);
    // 11

    filter


    findと同様に、filterは、所与のコールバック関数を満たすすべての要素の新しい配列を返します.
    コールバック関数で条件に基づいてtrueまたはfalse値を返すことを推奨します.
    arr.filter(callback(element,index,array))
    
    const arr = [32,64,88,82];
    
    const highScore = arr.filter((element) => element > 80);
    
    console.log(highScore);
    // [88, 82]

    reduce


    アレイ内の各要素に対してcallback関数を実行し、実行時の戻り値はループに蓄積され、最終的に最終結果が返されます.
    arr.reduce(callback(accumulator,currentValue,currentIndex),initialValue)
    // accumulator 누산기로 리턴 값을 누적합니다.
    // currentValue 처리할 현재 Element입니다.
    // currentIndex 처리할 현재 Index입니다.
    // initialValue 초깃값으로, 제공하지 않으면 배열의 첫번째 요소가 초깃값이 됩니다. 빈 배열에서 초깃값 없이 사용한다면 오류가 발생합니다.
    
    const arr = [5,2,3,4];
    
    const total = arr.reduce((acc,cur)=> acc+cur);
    console.log(total);
    // 14
    
    const avg = arr.reduce((acc,cur)=> acc+cur)/arr.length;
    console.log(avg);
    // 3.5
    
    const max = arr.reduce((max,cur) => max<cur ? cur : max)
    console.log(max);
    // 5

    sort


    デフォルトのソート順にアレイ内の要素をソートし、アレイに戻ります.デフォルトのソート順は文字列のUnicodeに従い、パラメータを指定することで、必要に応じてソート順を変更できます.
    arr.sort(compareFunction);
    
    const arr = [1,12,24,27,4,62];
    arr.sort();
    console.log(arr);
    // [1, 12, 24, 27, 4, 62]
    // 기본 순서는 문자열의 유니코드를에 따르기 때문에 낮은 순서로 정렬되지 않는다.
    
    arr.sort((a,b) => a-b)
    console.log(arr);
    // [1, 4, 12, 24, 27, 62]
    compareFunctionのフォーマット
    function compareFunction(a,b){
          if(a>b)
           return 1;
          if(a<b)
          return -1;
          // if(a===b)
          return 0;
    }
    // compareFunction return 값이 0보다 작을 경우 a를 b보다 낮다고 판단합니다.
    // return 값이 0일 경우 같다고 판단하고, 0보다 큰 경우 b를 a보다 낮다고 판단합니다.

    some, every


    some


    配列内の任意の要素が所定のcallback関数を満たしていることを確認し、そのうちの1つが満たされている場合はtrueを返し、そうでない場合はfalseを返します.
    空の配列は常にfalseを返します.
    arr.some(callback(currentValue,index,array));
    
    const arr = [1,2,3,4];
    
    const result = arr.some((element) => element > 3);
    console.log(result);
    // true

    every


    配列内のすべての要素が所定のcallback関数を満たすことを確認します.不満がある場合はfalse値を返します.
    arr.every(callback(currentValue,index,array));
    
    const arr = [1,2,3,4];
    
    const result = arr.every((element) => element > 3);
    console.log(result);
    // false