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()関数を使用します。
参考資料はこちらです。
関連記事
コメントを残す