01647

ustreamer-01647

作業メモ

JavascriptのString#split

  1. console.log("".split(","));
    • undefinedかと思いきや,要素""のみの配列
  2. console.log("a".split(","));
    • "a"のみ
  3. console.log("a,b,c".split(","));
    • "a", "b", "c"の3個
  4. "a,b,".split(",")
    • 試していない."a", "b", ""の3個だと思う

スキルシミュレータを作っている.「前提スキル」のレベルが最大値より小さくなった場合に,「派生スキル」のレベルを0にしたかった.派生スキルのレベルが0より大きくなった場合,前提スキルを最大値にしたかった.隣接するスキルを順次確認するような,再帰的なコードを書くと詰まった.各スキルについて,その前提スキル,派生スキルを全て書き出して打開した.

リセットボタン

button type="reset"では,関係スキルや表示設定までは初期化できなかった.

$("input#reset").click(function() {
	for (var i in skills) {
		skills[i].changeLevel();
	}
});

ページロード時の初期化処理にもこれを使う.アドレスパラメータを解析してのレベル変更も書きたい.

for in

foreachの様に,for( s in akills )などと書いてしまったが,違う.ここで設定する変数は添字になる.

for-in文がこの先生きのこるには

そんな配列やオブジェクトには使えないfor-in文ですが、そんな彼にも使い道があります。

連想配列です。

連想配列は添え字が数字ではなく文字の配列*3でlengthプロパティを持たないため、普通のfor文は使えません。

そういう場合はfor-in文を使います。

var test = {"hoge":"fuga","foo":"bar"};
for (var i in test){
  alert(test[i]);
}
javascriptのfor-in文は、for-each文の代わりじゃない - うろ覚えメモ