ikemonn's blog

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

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

jashkenas/underscore_.omitを読んだ。

概要

_.omit(object, *keys) 

第1引数から第2引数以降で指定したkey値以外のkey値とその値で構成されたObjectを返す。

var x = _.omit( {age: 20, sex: "male", country: "JP", name: "HOGA"}, ['age', 'sex']);
console.log(x); // {country: "JP", name: "HOGA"}

ソースコード

_.omit = function(obj, iteratee, context) {
    if (_.isFunction(iteratee)) {
      iteratee = _.negate(iteratee);
    } else {
      var keys = _.map(flatten(arguments, false, false, 1), String);
      iteratee = function(value, key) {
        return !_.contains(keys, key);
      };
    }
    return _.pick(obj, iteratee, context);
  };
var keys = _.map(flatten(arguments, false, false, 1), String);

をしているのは、JSのobjectのkeyはString型であり、_.containsは===で比較するため。

参考

jashkenas/underscore