[JavaScript] Array.prototype.some(), thisArg

10311 ワード

some()
some()メソッドは,配列要素を巡回し,コールバック関数の条件が一致するかどうかを調べるときに用いる.
すなわち、コールバック関数の条件で、配列要素のいずれかがtrueを返すと、いくつかの()の結果がtrueを返す.
const arr = [false, false, true, false, true, false];

console.log(
  arr.some((element, index) => {
    console.log(element, index);
    return element;
  })
);

console.log(
  arr.some(function callback(element, index) {
    console.log(element, index);
    return element;
  })
);
実行結果

使用例
定型的活用例は正式文書に多く整理されている.
私は複文の中で、特定の条件の下でbreakで複文を制御する必要がある場合があります.
foreachを用いて配列にメソッドチェーンを用いたが,foreachはbreakを使用できないことが分かった.
したがって、重複文を制御するためにいくつかの方法が使用されます.
  arr
    .sort((a, b) => b - a)    // 내림차순 정렬
    .some((element, i) => {
      if (i + 1 > element) {
        answer = i;
        return true;
      } else answer = arr.length;
    });
  • は、foreachメソッドがコールバック関数にfalseを返すことによって反復文を制御することもできることを後に知った.
  • arr.forEach(element => {
      if(condition) return false;
    }   
    thisArg

    公式文書を見ると、よくthis Argを見かけます.今まで、大したことないと思っていたので、この機会に何なのかを見つけたいと思います.
    簡単に言えば、thisArgはコールバック関数で使用される値を指定します.
    const arr = [false, false, true, false, true, false];
    
    console.log(
      arr.some((element, index) => {
        console.log(element, index, thisArg);
        console.log(this);
        return element;
      }, (thisArg = "This is this"))
    );
    
    console.log(
      arr.some(function (element, index) {
        console.log(element, index, thisArg);
        console.log(this);
        return element;
      }, (thisArg = "This is this"))
    );
    実行結果

    上記の結果に基づいて、コールバック関数をどのように定義するかは、異なる結果を出力します.
    矢印関数を使用してコールバックを定義する場合、矢印関数のthisはグローバルオブジェクト、すなわちconsoleを指します.log(this)の結果がグローバルオブジェクトを指すことを決定できます.
    コールバックが関数定義で定義されている場合、関数のthisがthisArgパラメータのStringオブジェクトとして出力されると判断できます.
    thisArgは分かりましたが、これをどのような場合に使うのか分かりません.
    参考資料
    https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/some
    https://ktpark1651.tistory.com/215