JavaScript

ある連続値が区間集合のどの位置に含まれるか

問題: 区間の上界と下界の属性を元に、何かを計算する 例えば、区間集合{ 3: {3の属性}, 5: {5の属性}, 8: {8の属性}, ... } 4を与えると、4は3と5の区間に含まれるから、3の属性と5の属性から、4の属性を新たに計算したい 解決1: 素朴に indexOf 4が区間(3,…

プログラミング言語、構文メモ

Javascript構文で、イラッとする細かいところ。 hoge = this; コールバック中のthisが呼び出し元スコープのthisではない そのため、既存のオブジェクト志向記述にするとよくundefでエラー停止 Arrayのmap, reduce, forEachの最後の引数にthisを渡さないとい…

Javascriptでのビット演算で結果が0値になる件について

どうも、Javascriptでは基本の数値型が浮動小数点のせいで、整数型は53ビットまでらしい。その上、表題の通り、大きな数でのビット演算で0になる。その場合の回避方法は、割り算すること。

データ構造の変換に畳み込み関数

関数型言語で非常に重要なfold(あるいはreduce,inject)を使うと初期化あり変数宣言を削除できるたとえば,二次元配列を一次元にするflattenをJavaScriptで var ret = []; aList.forEach(function(e, i, arr){ arr.push.call(ret, e); }); // これが var ret…

数値の通貨フォーマットに正規表現で置換

Number#to_currency('JPY')とかあればいいのかしら.ひとまず, String(vals['price']).replace(/(?:^|[^.])(\d)(?=(\d\d\d)+(?!\d))/g, "$1,"); vals['price'].to_s.gsub(/(?:^|[^.])(\d)(?=(\d\d\d)+(?!\d))/g, "$1,") (?=,(?!は先読み.

JavaScriptで文字列書式付き出力

JavaScriptには,書式付きで文字列を生成してくれる関数がない.CでいうsprintfやJavaでいうformatのようなもの.これがないせいで,HTMLのマークアップ文字列に値を埋め込むのがめんどくさいこと限りなし.ということで,Stringクラスを拡張. if (!String.…