[JavaScript]ハッシュのキー存在チェック関数

JavaScriptで、ハッシュ(連想配列)に指定したキーが存在するかどうかのチェック関数です。
通常の関数として使用する場合と、Arrayクラス自体に関数を追加するパターンを用意したので、お好みの方を使用してください。

プログラム


//-------------------------------------------------------------
// ハッシュのキー存在チェック(通常の関数として実装する場合)
//-------------------------------------------------------------
function array_key_exists (key, search) {
    // Checks if the given key or index exists in the array  
    // 
    // version: 1109.2015
    // discuss at: http://phpjs.org/functions/array_key_exists    
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Felix Geisendoerfer (http://www.debuggable.com/felix)
    // *     example 1: array_key_exists('kevin', {'kevin': 'van Zonneveld'});
    // *     returns 1: true
    //input sanitation    
    if (!search || (search.constructor !== Array && search.constructor !== Object)) {
        return false;
    }
 
    return key in search;
}


※コメントにもありますが、本関数はhttp://phpjs.org/functions/array_key_existsのから引用です。



//-------------------------------------------------------------
// ハッシュのキー存在チェック(Arrayクラス自体を拡張する場合)
//-------------------------------------------------------------
Array.prototype.containsKey = function( key ) {
	return key in this;
	//obj.hasOwnProperty( key ); //継承元のプロパティは見たくない場合、hasOwnProperty()を使用する
}








動作確認のプログラム

で、こちらは動作確認用のサンプルソースです

<input id="btnInput" type="button" value="表示" />
<script>
$(document).ready(function(){
 
    // 入力ボタンがクリックされたときのハンドラ
    $("#btnInput").click(function() {
    	testValue = new Array();
    	testValue[ "key1" ] = "value1";
    	testValue[ "key2" ] = "value2";
 
    	alert( "case1: key1 exist? → " + array_key_exists( "key1", testValue ) );  // true
    	alert( "case1: keyX exist? → " + array_key_exists( "keyX", testValue ) );  // false
 
    	alert( "case2: key1 exist? → " + testValue.containsKey( "key1" ) );        // true
    	alert( "case2: keyX exist? → " + testValue.containsKey( "keyX" ) );        // false
 
    });
});
</script>








補足


プログラム中のコメントにも記載しましたが、継承元のプロパティ(キー)をチェックからはずしたい場合は、inの代わりにhasOwnProperty()関数を使用します。
参考資料はこちらです。

関連記事

コメントを残す

メールアドレスが公開されることはありません。