バリケンのJavaScript日記 RSSフィード

2006-10-27

[] Core JavaScript 1.5 Guide 日本語版を読む(8)  Core JavaScript 1.5 Guide 日本語版を読む(8) - バリケンのJavaScript日記 を含むブックマーク はてなブックマーク -  Core JavaScript 1.5 Guide 日本語版を読む(8) - バリケンのJavaScript日記  Core JavaScript 1.5 Guide 日本語版を読む(8) - バリケンのJavaScript日記 のブックマークコメント

きょうもCore JavaScript 1.5 Guide 日本語版「第3章 コア言語の機能」を引き続き読んでいくよ。

今日も気になったところをメモするよ。

オブジェクトリテラル

「{ }」でオブジェクトを作れるよ。ただし、ブロックとまぎらわしいから文の最初で使っちゃダメみたい。

>cscript ijs.js
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

js> obj = { }
[object Object]
js> mypc = { cpu: "1GHz", mem: "512MB", hdd: "60GB" }
[object Object]
js> mypc.cpu
1GHz
js> mypc.mem
512MB
js> mypc.hdd
60GB
js> ^C
>

アクセサが自動的に設定されちゃうのかな?

[] 「たのしいRuby 第2版」の練習問題をJavaScriptで解く(2)  「たのしいRuby 第2版」の練習問題をJavaScriptで解く(2) - バリケンのJavaScript日記 を含むブックマーク はてなブックマーク -  「たのしいRuby 第2版」の練習問題をJavaScriptで解く(2) - バリケンのJavaScript日記  「たのしいRuby 第2版」の練習問題をJavaScriptで解く(2) - バリケンのJavaScript日記 のブックマークコメント

きょうも「たのしいRuby」の練習問題をJavaScriptで解いて、Rubyの回答と比較してみるよ。

まずはこちら

(1) 1から100までの整数を含む配列を作ってください。

たのしいRuby 第2版

じゃあ、ぼくの答えだよ。

var ary = [];
for (var i = 0; i < 100; i++) {
  ary[i] = i + 1;
}

別解として、範囲オブジェクトを使ってみるよ。

var ary = new ObjectRange(1, 100).toArray();

次はこちら

(2) (1)の配列の要素をすべて100倍した要素を含む、新しい配列を作ってください。また、新しい配列を作成せずに、すべての要素を100倍したものに置き換えてください。

たのしいRuby 第2版

じゃあ、ぼくの答えだよ。まずは新しい配列を作るもの。

var ary = new ObjectRange(1, 100).toArray();

var new_ary = ary.map(function(x) { return x * 100; });

次に、置き換えるもの。

var ary = new ObjectRange(1, 100).toArray();

var ary = ary.map(function(x) { return x * 100; });

その次はこちら

(3) (1)の配列から3の倍数だけを取り出して、新しい配列を作ってください。また、新しい配列を作成せずに、3の倍数以外の数を削除してください。

たのしいRuby 第2版

じゃあ、ぼくの答えだよ。まずは新しい配列を作るもの。

var ary = new ObjectRange(1, 100).toArray();

var new_ary = ary.select(function(x) { return (x % 3 == 0) });

次に、削除。正確には削除じゃないけど、まあいいよね。

var ary = new ObjectRange(1, 100).toArray();

var ary = ary.select(function(x) { return (x % 3 == 0) });

さらにその次はこちら

(4) (1)の配列を次の3つの方法で逆順に並べ換えてください。 (a)Array#reverseメソッドを使う (b)Array#sortメソッドを使う (c)Array#sort_byメソッドを使う

たのしいRuby 第2版

じゃあ、ぼくの答えだよ。まずは(a)から。

var ary = new ObjectRange(1, 100).toArray();

ary.reverse();

次に(b)だよ。

var ary = new ObjectRange(1, 100).toArray();

ary.sort(function(x, y) { if (x < y) return -1; if (x > y) return 1; if (x == y) return 0; });

さいごに(c)だよ。

var ary = new ObjectRange(1, 100).toArray();

ary.sortBy(function(x) { return -x; });

うん、ここまでやってみた感じでは、やっぱりRubyに似てるねえ。

トラックバック - http://javascript.g.hatena.ne.jp/muscovyduck/20061027