久しぶりにjavascript(Arrayがメイン)
最初はここ*1のコードを写してみようと思ったのだけれど、3行ぐらいで飽きてしまった。
なのでMDCのリファレンス*2を見ながら適当にやってみた。
var hoge = 1; var foo = (function() {var a=[]; for (var i=0; i<20; i++){a[i]=i}return a})(); //存在しない(objectRange print(hoge+1); //=>2 //すぐに飽きてしまった。mapとか使ってみたい。 //print(foo); print(foo.map(function(arg){return arg*arg})) //=>0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361 //0から10番目までを取り出したい。 print(foo.slice(0,10).map(function(arg){return arg*arg})) //=>0,1,4,9,16,25,36,49,64,81 //return省略できないかなー //どこかで省略できるという話を聞いたような気がするけど… //配列の要素全てにたいして式が成り立つか print(foo.every(function(arg){return arg>=0})) //=>true print(foo.every(function(arg){return arg>0})) //=>false //偶数を集める print(foo.filter(function(arg){return arg%2==0})) //=>0,2,4,6,8,10,12,14,16,18 //配列のどれかは式が成り立っているか調べる print(foo.some(function(arg){return arg>=100})) //=>false print(foo.some(function(arg){return arg>=10})) //=>true //forEachの使いかたはよくわかってない。(第2引数の辺り) //foo.forEach(function(arg){print(arg+"!")}) //出力が長すぎる var arr = foo.filter(function(arg){return arg%5==0}) arr.reverse().forEach(function(arg){print(arg+"!")}) //=>15! //10! //5! //0! //こんな感じで良いのかな? //文字列を配列の用に扱う str="hogehoge" function isLetter(chr) {return (chr >= "a" && chr <= "z")}; //昔はこうやっていた。 var chr_only = function(m){ print( m, "version :", "This str's element are alphabet only.") }; if (Array.prototype.every.call(str, isLetter)) chr_only("1.5"); //=>1.5 version : This str's element are alphabet only. //1.6からはこうできる if (Array.every(str, isLetter)) chr_only("1.6"); //=>1.6 version : This str's element are alphabet only. //http://developer.mozilla.org/ja/docs/Core_JavaScript_1.5_Reference:Global_Objects:Arrayを見たら、1.6以外の情報も書いてあった。(それを使って色々改変) print([1,3,7].concat([2,2]).join("・ω・")) //=>1・ω・3・ω・7・ω・2・ω・2 //reduceはrubyのinjectと同じ感じかな? print([[1,2,3],[1,2],[1]].reduce(function(a,b) {return a.concat(b)}).reduce(function(a,b){return a+b})) //reduce is not a function 的なerrorが出た。 //spidermonkeyのバージョンが1.6でした>< //1.8に変えたら動いた。 //=>10
まだ分かってなさそうなこと
- to*系のメソッド
- forEach()とかの2つ目の引数の使い道。
spidermonkeyのビルドの仕方。
下のふたつを参考に
あと、個人的な話
ubuntuは自分でパッケージをビルドするときは/opt以下にもってくるらしい(たしか。どこかで聞いたような気がする。)
なので展開するのは/opt以下に。そして自分でビルドしたものを使うようにする。
alias js='/opt/mozilla/js/src/Linux_All_DBG.OBJ/js' alias smjs='js'