intersection() | Underscore JS 日本語リファレンス

第1引数「配列」の各値が第2引数以降の引数(配列)に含まれている値のみの配列を返す。

■使用例

var arr = [ 1, 2, 3 ];
var arr01 = [ 101, 2, 1, 10 ];
var arr02 = [ 2, 1 ];

// re = [ 1, 2 ];
var re = _.intersection( arr, arr01, arr02 );

var arr = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 4, 5, 7, 9, false, undefined, undefined ];
var arr01 = [ 101, 2, 1, 10 ];
var arr02 = [ 2, 1 ];
var arr03 = [ false, 1000 ];

// re = [ ];
var re = _.intersection( arr, arr01, arr02, arr03 );

■内部構造

  _.intersection = function(array) {
  	
    if (array == null) return [];
    var result = [];
    
// 引数の長さを抽出。
    var argsLength = arguments.length;

// 第1引数「配列」の各値が第2引数以降の引数(配列)に値が含まれているかを確認するforループ。
    for (var i = 0, length = array.length; i < length; i++) {
      var item = array[i];

// result配列に値があったら、この値の処理をskip。次の値を処理。
      if (_.contains(result, item)) continue;
      
// 第2引数以降の引数(配列)に第1引数の各値がなかったら break。
      for (var j = 1; j < argsLength; j++) {
        if (!_.contains(arguments[j], item)) break;
      }
// 第1引数の値が第2引数以降の配列にそれぞれ同じ値があったら、result配列に入れる。
      if (j === argsLength) result.push(item);
    }
// forループ終わり。

    return result;
  };

このページのトップへ戻る