【Underscore.js】_.pickを読んだ
jashkenas/underscoreの_.pickを読んだ。
概要
_.pick(object, *keys)
第一引数から第2引数以降で指定したkey値とその値で構成されたObjectを返す。
var x = _.pick({age: 20, sex: "male", country: "JP", name: "HOGA"}, 'age', 'country'); console.log(x); // {age: 20, country: "JP"} var y = _.pick(list, function(val, key, obj){ return _.isNumber(val); }); console.log(y); // {age: 20}
ソースコード
_.pick = function(object, oiteratee, context) { var result = {}, obj = object, iteratee, keys; if (obj == null) return result; if (_.isFunction(oiteratee)) { keys = _.allKeys(obj); iteratee = optimizeCb(oiteratee, context); } else { keys = flatten(arguments, false, false, 1); iteratee = function(value, key, obj) { return key in obj; }; obj = Object(obj); } for (var i = 0, length = keys.length; i < length; i++) { var key = keys[i]; var value = obj[key]; if (iteratee(value, key, obj)) result[key] = value; } return result; };
第二引数が関数の場合、各プロパティに対して渡した関数実行される。 関数でない場合は、指定したkeyのプロパティを第一引数のobjectから取得している。