目次
keys
オブジェクトすべてのプロパティ名を返す
var r = document.getElementById("r"); r.innerHTML = _.keys({one: 1, two: 2, three: 3}); // => ["one", "two", "three"]
values
オブジェクトすべてのプロパティの値を返す
var r = document.getElementById("r"); r.innerHTML = _.values({one: 1, two: 2, three: 3}); // => [1, 2, 3]
pairs
オブジェクトを配列に変換して返す
var r = document.getElementById("r"); r.innerHTML = _.pairs({one: 1, two: 2, three: 3}); // => [["one", 1], ["two", 2], ["three", 3]]
invert
オブジェクトのキーと値を逆にして返す
var r = document.getElementById("r"); var result = _.invert({one: 1, two: 2, three: 3}); // => Object { 1="one", 2="two", 3="three"} r.innerHTML = result[1] + ' ' + result[2] + ' ' + result[3]; // => one two three
functions
オブジェクト内にあるfunctionをすべて配列で返す
var r = document.getElementById("r"); var f = { bFunc: function() {}, aFunc: function() {}, cFunc: function() {}, hoge: 123 }; var result = _.functions(f); r.innerHTML = result; // => ["aFunc", "bFunc", "cFunc"]
extend
オブジェクトを継承して1つにして返す
var r = document.getElementById("r"); var result = _.extend({name: "sato"}, {age: 20}); // => Object { name="sato", age=20} r.innerHTML = result.name + ' ' + result.age; // => sato 20
pick
指定したキーが入っているオブジェクトを返す
var r = document.getElementById("r"); var result = _.pick({name: 'suzuki', age: 20, userid: 'i01'}, 'name', 'age'); // => Object { name="suzuki", age=20} r.innerHTML = result.name; // => suzuki
このようにfunctionで抽出することも可能
var result2 = _.pick({name: 'suzuki', age: 20, userid: 'i01'}, function(value, key, object) { return _.isNumber(value); } ); // => Object { name="suzuki", age=20} r2.innerHTML = result2.age; // => 20
omit
指定したキー以外が入っているオブジェクトを返す
var r = document.getElementById("r"); var result = _.omit({name: 'suzuki', age: 20, userid: 'i01'}, 'userid'); // => Object { name="suzuki", age=20 } r.innerHTML = result.name; // => suzuki
このようにfunctionで抽出することも可能
var result2 = _.omit({name: 'suzuki', age: 20, userid: 'i01'}, function(value, key, object) { return _.isNumber(value); } ); // => Object { name: "suzuki", userid: "i01" } r2.innerHTML = result2.name; // => suzuki
defaults
オブジェクトのプロパティが未定義のときのデフォルト値を返す
var r = document.getElementById("r"); var data = { name: 'yamada' }; var result = _.defaults(data, {name: 'suzuki', userid: 'i01'}); // => Object { name: 'yamada', userid: 'i01' } r.innerHTML = result.name; // => yamada
clone
オブジェクトをシャローコピーして返す
var r = document.getElementById("r"); var data = {name: 'yamada'}; var result = _.clone(data, true); result.name = 'suzuki'; r.innerHTML = result.name; // => suzuki r2.innerHTML = data.name; // => yamada
tap
メソッドチェーンの途中の処理結果を返す
var r = document.getElementById("r"); var result = _.chain([1,2,3,200]) .filter(function(num) { return num % 2 === 0; }) .tap(alert) // => [2, 200] .map(function(num) { return num * num; }) .value(); r.innerHTML = result; // => [4, 40000]
has
オブジェクトに指定したキーが含まれる場合はtrueを返す
var r = document.getElementById("r"); r.innerHTML = _.has({a: 1, b: 2, c: 3}, "b"); // => true
property
オブジェクトのキーを返す関数を返す
var r = document.getElementById("r"); var me = {name: 'sato'}; var result = 'sato' === _.property('name')(me); r.innerHTML = result; // => true
matches
条件にマッチしたオブジェクトを返す
var r = document.getElementById("r"); var data = [ {name: 'yamada', age: 20}, {name: 'sato', age: 20}, {name: 'sazuki', age: 30} ]; var matches = _.matches({age: 20}); var result = _.filter(data, matches); // => [{name: 'yamada', age: 20}, {name: 'sato', age: 20}] r.innerHTML += result[0].name + ' '; r.innerHTML += result[1].name; // => yamada sato
isEqual
オブジェクトの中身が同じ場合はtrueを返す
(オブジェクトは==で比較した場合は中身が同じでもfalseを返す)
var r = document.getElementById("r"); var orig = {name: 'sato'}; var clone = {name: 'sato'}; console.log(orig == clone); // => false console.log(orig === clone); // => false r.innerHTML = _.isEqual(orig, clone); // => true
isEmpty
中身が空の場合はtrueを返す
var r = document.getElementById("r"); r.innerHTML = _.isEmpty([1, 2, 3]); // => false var r2 = document.getElementById("r2"); r2.innerHTML = _.isEmpty([]); // => true
isElement
オブジェクトがDOM要素の場合はtrueを返す
var r = document.getElementById("r"); r.innerHTML = _.isElement(document.getElementsByTagName("h1")[0]); // => true
isArray
配列の場合はtrueを返す
var r = document.getElementById("r"); r.innerHTML = _.isArray([1, 2, 3]); // => true
isObject
オブジェクトの場合はtrueを返す
var r = document.getElementById("r"); r.innerHTML = _.isObject({}); // => true
isArguments
Argumentsのオブジェクトの場合はtrueを返す
var r = document.getElementById("r"); r.innerHTML = (function(){ return _.isArguments(arguments); })(1, 2, 3); // => true
isFunction
Functionの場合はtrueを返す
var r = document.getElementById("r"); function f() {} r.innerHTML = _.isFunction(f); // => true
isString
文字列の場合はtrueを返す
var r = document.getElementById("r"); var s = 'sato'; r.innerHTML = _.isString(s); // => true
isNumber
数値の場合はtrueを返す
var r = document.getElementById("r"); var s = 123; r.innerHTML = _.isNumber(s); // => true
isFinite
有限の場合はtrueを返す
var r = document.getElementById("r"); var s = 123; r.innerHTML = _.isNumber(s); // => true
isBoolean
trueかfalseの場合はtrueを返す
var r = document.getElementById("r"); r.innerHTML = _.isBoolean(1 === 1); //=> true var r2 = document.getElementById("r2"); r2.innerHTML = _.isBoolean(1 !== 1); //=> true
isDate
Dateオブジェクトの場合はtrueを返す
var r = document.getElementById("r"); r.innerHTML = _.isDate(new Date()); //=> true
isRegExp
正規表現の場合はtrueを返す
var r = document.getElementById("r"); r.innerHTML = _.isRegExp(/^TEST$/); //=> true
isNaN
isNaNの場合はtrueを返す
var r = document.getElementById("r"); r.innerHTML = _.isNaN(NaN); //=> true
isNull
nullの場合はtrueを返す
var r = document.getElementById("r"); r.innerHTML = _.isNull(nul;); //=> true
isUndefined
undefinedの場合はtrueを返す
var r = document.getElementById("r"); r.innerHTML = _.isUndefined(undefined); //=> true
ほかのUnderscore.jsの記事
- Underscore.js 1.7の使い方 Arrays編
- Underscore.js 1.7の使い方 Collections編
- Underscore.js 1.7の使い方 Utility編
- Underscore.js 1.7の使い方 Functions編
- Underscore.js 1.7の使い方 Chaining編