第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;
};