第2引数以降をまとめた配列の各値を省いた第1引数(配列)が返る。
■使用例
var arr001 = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ];
var arr002 = [ 0, 1, 2, 10 ];
// re = [ 3, 4, 5, 6, 7, 8, 9 ];
var re = _.difference( arr001, arr002 );
■内部構造
_.difference = function(array) {
// 第2引数をまとめた配列 = rest。
// 第2引数以降の引数(配列)が入れ子の場合は一つだけしか解消しない。第2引数以降の引数でObjectがある場合は、そのObjectの値は入らない。
var rest = flatten(arguments, true, true, 1);
// _.filter() 処理された配列が返る。
return _.filter(array, function(value){
// restに含まれる値がある時は「false」を返す。
return !_.contains(rest, value);
});
};