Native: Hash

新たに実装されたカスタムオブジェクト({})であり、作成、取得、反復処理時にprototypeを参照しません。 JavaScriptではObject.prototypeを使えませんが、Hash.prototypeを使えるというのは、とても便利なことなのです!

Hashメソッド: constructor

構文:

var myHash = new Hash([object]);

引数:

  1. object - (いろいろ) 連想配列か、それに変換したいオブジェクト。

戻り値:

  • (連想配列) 新しい連想配列インスタンス。

例:

var myHash = new Hash({
    aProperty: true,
    aMethod: function(){
        return true;
    }
});
alert(myHash.has('aMethod')); //戻り値: true.

Hashメソッド: each

オブジェクト内にあるキー=値のベアに対して関数を呼び出します。

構文:

myHash.each(fn[, bind]);

引数:

  1. fn - (関数) 連想配列内にある各要素に対して実行する関数。この関数には要素自身とキー名が与えられます。
  2. bind - (オブジェクト, オプション) 関数内で'this'として参照したいオブジェクト。詳しくはFunction:bindを参照のこと。

引数: fn

構文:
fn(value, key, hash)
引数:
  1. value - (いろいろ) 連想配列内の現在の値。
  2. key - (文字列) 現在の値のキー名。
  3. hash - (連想配列) 実際の連想配列。

例:

var hash = new Hash({first: "Sunday", second: "Monday", third: "Tuesday"});
hash.each(function(value, key){

    alert("the " + key + " day of the week is " + value);
}); //"the first day of the week is Sunday", "the second day of the week is Monday", という具合にアラート。

Hashメソッド: has

連想配列内の特定のキーが存在するかテストします。

構文:

var inHash = myHash.has(item);

引数:

  1. key - (文字列) 連想配列の中で検索したいキー名。

戻り値:

  • (真偽値) 該当するキーに任意の値が定義されていればtrue。そうでなければfalseを返します。

例:

var hash = new Hash({'a': 'one', 'b': 'two', 'c': 'three'});
hash.has('a'); //戻り値 true

hash.has('d'); //戻り値 false

注意:

  • 連想配列のprototypeにtestメソッドを実行しても、絶対にtrueを返しません。Hashの実際のプロパティにtestメソッドを実行したときだけtrueを返します。

Hashメソッド: keyOf

任意の値を持つキーを返します。Array:indexOfと同じです。

構文:

var key = myHash.keyOf(item);

引数:

  1. item - (いろいろ) 連想配列内で検索したい値。

戻り値:

  • (文字列) 連想配列が該当する値を持っていた場合、そのキー名を返します。
  • (真偽値) そうでなければ、falseを返します。.

例:

var hash = new Hash({'a': 'one', 'b': 'two', 'c': 3});
hash.keyOf('two'); //戻り値 'b'

hash.keyOf(3); //戻り値 'c'
hash.keyOf('four') //戻り値 false

注意:

  • 連想配列のprototypeにkeyOfメソッドを実行しても、絶対にtrueを返しません。Hashの実際のプロパティにkeyOfメソッドを実行したときだけtrueを返します。

Hashメソッド: hasValue

連想配列内に特定の値が存在するかをテストします。

構文:

var inHash = myHash.hasValue(value);

引数:

  1. value - (いろいろ) 連想配列内で検索したい値。

戻り値:

  • (真偽値) どのキーにであれ、連想配列が該当する値を持っていた場合にtrueを返します。そうでなければfalseを返します。

例:

var hash = new Hash({'a': 'one', 'b': 'two', 'c': 'three'});
hash.hasValue('one'); //戻り値 true

hash.hasValue('four'); //戻り値 false

Hashメソッド: extend

渡されたオブジェクトのキー=値ペアを使って連想配列を拡張します。

構文:

myHash.extend(properties);

引数:

  1. properties - (オブジェクト) 連想配列に対して拡張する要素を持ったオブジェクト。

戻り値:

  • (連想配列) 拡張された連想配列。

例:

var hash = new Hash({

    'name': 'John',
    'lastName': 'Doe'
});
var properties = {

    'age': '20',
    'sex': 'male',
    'lastName': 'Dorian'
};
hash.extend(properties);

//連想配列が今持っているオブジェクト: { 'name': 'John', 'lastName': 'Dorian', 'age': '20', 'sex': 'male' };

Hashメソッド: combine

渡されたオブジェクトのキー=値を連想配列に結合します。重複は許可せず(古い要素は新しい要素によって上書きされません)、大文字小文字・データ型を区別します。

構文:

myHash.combine(properties);

引数:

  1. properties - (オブジェクト) 連想配列に結合したい要素を持っているオブジェクト。

戻り値:

  • (連想配列) 新しいキー=値と結合された連想配列。

例:

var hash = new Hash({
    'name': 'John',
    'lastName': 'Doe'

});
var properties = {
    'name': 'Jane'
    'age': '20',
    'sex': 'male',
    'lastName': 'Dorian'

};
hash.combine(properties);
//連想配列が今持っているオブジェクト: { 'name': 'John', 'lastName': 'Doe', 'age': '20', 'sex': 'male' };

Hashメソッド: erase

特定のキーを連想配列から取り除きます。

構文:

myHash.erase(key);

引数:

  1. key - (文字列) 連想配列から消去したキー。

戻り値:

  • (連想配列) 指定したキー=値が取り除かれた連想配列。

例:

var hash = new Hash({

    'name': 'John',
    'lastName': 'Doe'
});
hash.erase('lastName');

//連想配列が今持っているオブジェクト: { 'name': 'John' };

Hashメソッド: get

連想配列内から値を取得します。

構文:

myHash.get(key);

引数:

  1. key - (文字列) 連想配列から取り出したい値のキー。

戻り値:

  • (いろいろ) 該当するキーが会った場合、そのキーの値。
  • (null) キーが存在しなければnull。

例:

var hash = new Hash({

    'name': 'John',
    'lastName': 'Doe'
});
hash.get('name'); //戻り値 'John'

Hashメソッド: set

連想配列にキー=値を追加し、同じキーがあった場合は値を上書きします。

構文:

myHash.set(key, value);

引数:

  1. key - (文字列) 連想配列内で修正・追加したいキー。
  2. value - (いろいろ) 連想配列内で該当するキーに上書きしたい値。

戻り値:

  • (連想配列) 該当するキーが修正・追加された連想配列。

例:

var hash = new Hash({

    'name': 'John',
    'lastName': 'Doe'
});
hash.set('name', 'Michelle'); //hash.nameは現在'Michelle'です。

Hashメソッド: empty

連想配列を空にします。

構文:

myHash.empty();

例:

var hash = new Hash({
    'name': 'John',
    'lastName': 'Doe'

});
hash.empty();
//hashは空のオブジェクトになりました: {}

Hashメソッド: include

まだキーが存在しない場合、連想配列に特定のキー=値のペアを追加します。

構文:

myHash.include(key, value);

引数:

  1. key - (文字列) 連想配列に挿入したいキー。
  2. value - (いろいろ) 上で指定したキーに対応する値。

戻り値:

  • (連想配列) それ以前に該当するキーがなければ、それが追加された連想配列。

例:

var hash = new Hash({
    'name': 'John',
    'lastName': 'Doe'

});
hash.include('name', 'Michelle'); //hashは変わりません。
hash.include('age', 25); //hash.ageは25になりました。

Hashメソッド: map

連想配列の各キーに対して関数を実行した結果を新しい連想配列にマップします。

構文:

var mappedHash = myHash.map(fn[, bind]);

引数:

  1. fn - (関数) 現在の連想配列から新しい連想配列に値を提供する関数。
  2. bind - (オブジェクト, オプション) 関数内で'this'として参照したいオブジェクト。詳しくはFunction:bindを参照のこと。

引数: fn

構文:
fn(value, key, hash)
引数:
  1. value - (いろいろ) 連想配列内の現在の値。
  2. key - (文字列) 現在の値のキー。
  3. hash - (連想配列) 実際の連想配列。

戻り値:

  • (連想配列) 新たにマップされた連想配列。

例:

var timesTwo = new Hash({a: 1, b: 2, c: 3}).map(function(value, key){

    return value * 2;
}); //timesTwoが現在持っているオブジェクト: {a: 2, b: 4, c: 6};

Hashメソッド: filter

連想配列に対してフィルタリング関数を実行し、trueを返した要素のみからなる連想配列を作成します。

構文:

var filteredHash = myHash.filter(fn[, bind]);

引数:

  1. fn - (関数) 連想配列の各要素をテストする関数。この関数には連想配列のキーと値が渡されます。
  2. bind - (オブジェクト, オプション) 関数内で'this'として参照したいオブジェクト。詳しくはFunction:bindを参照のこと。

引数: fn

構文:
fn(value, key, hash)
引数:
  1. value - (いろいろ) 連想配列内における現在の値。
  2. key - (文字列) 現在の値のキー名。
  3. hash - (連想配列) 実際の配列。

戻り値:

  • (連想配列) フィルタリングされた新しい連想配列。

例:

var biggerThanTwenty = new Hash({a: 10, b: 20, c: 30}).filter(function(value, key){

    return value > 20;
}); //biggerThanTwentyの現在のオブジェクト: {c: 30}

Hashメソッド: every

連想配列のオブジェクトがテスト関数の条件をすべて満たす場合、trueを返します。

構文:

var allPassed = myHash.every(fn[, bind]);

引数:

  1. fn - (関数) 連想配列の各要素をテストする関数。この関数にはキーと値が渡されます。
  2. bind - (オブジェクト, オプション) 関数内で'this'として参照したいオブジェクト。詳しくはFunction:bindを参照のこと。

引数: fn

構文:
fn(value, key, hash)
引数:
  1. value - (いろいろ) 連想配列内における現在の値。
  2. key - (文字列) 現在の値のキー名。
  3. hash - (連想配列) 実際の配列。

戻り値:

  • (真偽値) 配列内のすべての要素がテスト関数の条件を満たすならばtrue。そうでなければfalseを返します。

例:

var areAllBigEnough = ({a: 10, b: 4, c: 25, d: 100}).every(function(value, key){

    return value > 20;
}); //areAllBigEnough = false

Hashメソッド: some

連想配列内の要素が一つでもテスト関数の条件を満たすならばtrue。

構文:

var anyPassed = myHash.any(fn[, bind]);

引数:

  1. fn - (関数) 連想配列の各要素をテストする関数。この関数にはキーと値が渡されます。
  2. bind - (オブジェクト, オプション) 関数内で'this'として参照したいオブジェクト。詳しくはFunction:bindを参照のこと。

引数: fn

構文:
fn(value, key, hash)
引数:
  1. value - (いろいろ) 連想配列内における現在の値。
  2. key - (文字列) 現在の値のキー名。
  3. hash - (連想配列) 実際の配列

戻り値:

  • (真偽値) もし連想配列内の要素が一つでもテスト関数の条件を満たすならば、true。そうでなければfalseを返す。

例:

var areAnyBigEnough = ({a: 10, b: 4, c: 25, d: 100}).some(function(value, key){

    return value > 20;
}); //isAnyBigEnough = true

Hashメソッド: getClean

連想配列を空っぽのオブジェクトにして返します。

構文:

myHash.getClean();

戻り値:

  • (オブジェクト) 空っぽのオブジェクト。

例:

var hash = new Hash({

    'name': 'John',
    'lastName': 'Doe'
});
hash = hash.getClean(); // hashはもはやHashプロパティを持ちません。

hash.each() //エラー!

Hashメソッド: getKeys

Hash:getValuesで返されるのと同じ順番で、連想配列の持つキーからなる配列を返します。

構文:

var keys = myHash.getKeys();

戻り値:

  • (配列) 連想配列のすべてのキーからなる配列。

Hashメソッド: getValues

Hash:getKeysで返されるのと同じ順番で、連想配列のすべての値からなる配列を返します。

構文:

var values = myHash.getValues();

戻り値:

  • (配列) 連想配列のすべての値からなる配列。

Hashメソッド: getLength

連想配列内のキーの数を返します。

構文:

var length = myHash.getLength();

戻り値:

  • () 連想配列の長さ。

例:

var hash = new Hash({
    'name': 'John',
    'lastName': 'Doe'

});
hash.getLength(); // 戻り値 2

Hashメソッド: toQueryString

オブジェクトのキー=値からクエリ文字列を生成し、URIエンコードします。

構文:

var queryString = myHash.toQueryString();

引数:

  1. source - (オブジェクト) クエリ文字列を生成したいオブジェクト。

戻り値:

  • (文字列) クエリ文字列。

例:

Hashジェネリックの場合:

Hash.toQueryString({apple: "red", lemon: "yellow"}); //戻り値 "apple=red&lemon=yellow"

Hashインスタンスの場合:

var myHash = new Hash({apple: "red", lemon: "yellow"});
myHash.toQueryString(); //戻り値 "apple=red&lemon=yellow"

Utility Functions

Function: $H

new Hashのショートカットです。

参考情報:

このドキュメントはMooToolsのドキュメントを元に高橋文樹が翻訳(ちょっと改変)しました。
本家と同じく、Attribution-NonCommercial-ShareAlike 3.0ライセンスで公表されています。

トップに戻る