ikemonn's blog

技術ネタをちょこちょこと

【Underscore.js】_.withoutを読んだ

jashkenas/underscore_.withoutを読んだ。

概要

_.without(array, *values) 

arrayからvaluesを除いた配列を返す。

var list = [1, 10, 7, 190, 43];
var x = _.without(list, 7, 43 ,190);
console.log(x); // [1, 10]

ソースコード

_.without = function(array) {
    return _.difference(array, slice.call(arguments, 1));
  };

_.difference = function(array) {
    var rest = flatten(arguments, true, true, 1);
    return _.filter(array, function(value){
      return !_.contains(rest, value);
    });
  };

flattenで、第二引数以降の値を取り出している。 その後、.filterと.containsを用いて、配列に値が含まれているかをチェックしている。

参考

jashkenas/underscore