JSを久しぶりに触ると、「あれ?オブジェクトのアクセスはどうするんだったっけ?」となりました。(すぐ忘れるタチ)
というのもfor()
などで回す回数をlength()
で取ろうと思っても、取れない。JSでのオブジェクトは以下のようにObject.keys()
の中にぶち込んで回すんですねえ。
var obj = { dog: 'いぬ', cat: 'ネコ', bird: '鳥' }; Object.keys(obj).forEach(function (key) { alert('key:' + key + 'value:' + obj[key]); });
ちょっと、応用として、セレクトボックスがあったとして、「選択されたものをテキストボックスに自動入力する」みたいなのをやってみます。※フォームは略すけどw
// 動物リスト(なんでもええわ) var animalList = { 'dog': '犬', 'cat': 'ネコ', }; /** * 選択された値により文字列をセットする * * @param {string} selectKey 選択されたキー */ var setInputForm = function(selectkey) { Object.keys(animalList).forEach(function (key) { if (selectKey == key) { // FormのinputのidにanimalInputがあると仮定 $('#animalInput').val(animalList[key]); } else { // 対象のリスト以外があった場合は空白 $('#animalInput').val(''); } }); // selectboxが選択される度に発火 $('#selectbox').on('change' function(){ // selectbox:optionに同じdogなどのkeyが存在すると仮定 var selectKey = $('#selectbox').val(); setInputForm(selectKey); });
という感じで、(動作確認はしてないけど) 動くかどうかというより、オブジェクトにリスト定義しておいて、それをforEach()
で回しつつ、ごにょごにょするみたいなのは、よくあるパターンかもしれませんね。