JavaScriptと
Collection
Introduction
 狩野 和博
 Gentoo
 Emacs
 Ruby, TypeScript, Haskell, C#
 Firefox OS, Tizen OS, Windows Phone OS
 ガジェット, カメラ
Collection
今日のテーマ
Collection
 コレクション処理を聞いたことがある人
 RubyのEnumerableクラスを聞いたことがある人
 Pythonのiterateを引数にとる関数を見たことがある人
 JavaScriptのunderscore.j...
関数群
 Array.filter, Array.map, Array.each
 filter, map, each
 array_filter, array_map, forEach
配列処理
linq.js
今日のお題その1
linq.js
 linq.js - LINQ for JavaScript http://linqjs.codeplex.com/
 LINQのJavaScript実装
 日本人の @neue さん作
統合言語クエリ(LINQ)
.NE...
Functions
 Enumerableオブジェクト生成
 From, Range
 フィルタリング
 Select, Where, Scan, SelectMany, Zip
 順序
 OrderBy, OrderByDesce...
Example
配列内の偶数だけ2倍して出力
Example
配列の偶数だけ取り出して、2倍して出力
Example
JavaScript
var array = [101, 20, 2, 42, 33, 47, 52];
array.forEach(function(x, i) {
if (x % 2 == 0) {
var v = x * ...
Example
linq.js
var array = [101, 20, 2, 42, 33, 47, 52];
Enumerable.From(array)
.Where(function(x){ return x % 2 == 0 })
...
Example 2
配列の要素の2乗和を求めていき、最初に2000を超えた要素
を求める
Example 2
配列の2乗和を求めていき、2000を超えた最初の要素を出力
Example 2
JavaScript
var x = 2, t = 0,
twice = [1], temp = [1];
while(true) {
var v = x * x, t = v;
for(var i = 0; i < twi...
Example 2
linq.js
// 1から無限大まで数値をジェネレート [1, 2, 3, 4,...]
var result = Enumerable.ToInfinity(1)
.Select("$*$") // 二乗 [1, 4, ...
Advantage
 Enumerableオブジェクトを返すまで評価が遅延される
 無限配列を扱える
 jQueryの世界とも連携できる
 jQueryとlinqは共存
RxJS
今日のお題その2
RxJS
 The Reactive Extensions for JavaScript
 (Functional) Reactive Programminng のライブラリ
 Microsoftから公式に提供されているライブラリ
 C...
Reactive
Programming
var a = 1;
var b = a + 1;
a = 5;
b = ???
Example
Appendex
 linq.js & Reactive Extensions for JavaScript(RxJS)入門
 http://neue.cc/2010/12/20_290.html
 やさしいFunctional reac...
Upcoming SlideShare
Loading in …5
×

JavaScriptとCollection

794 views

Published on

社内お昼勉強会2013.10.3資料

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
794
On SlideShare
0
From Embeds
0
Number of Embeds
28
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

JavaScriptとCollection

  1. 1. JavaScriptと Collection
  2. 2. Introduction  狩野 和博  Gentoo  Emacs  Ruby, TypeScript, Haskell, C#  Firefox OS, Tizen OS, Windows Phone OS  ガジェット, カメラ
  3. 3. Collection 今日のテーマ
  4. 4. Collection  コレクション処理を聞いたことがある人  RubyのEnumerableクラスを聞いたことがある人  Pythonのiterateを引数にとる関数を見たことがある人  JavaScriptのunderscore.jsを聞いたことがある人  PHPでarray_*関数を隅から隅まで見たことがある人
  5. 5. 関数群  Array.filter, Array.map, Array.each  filter, map, each  array_filter, array_map, forEach
  6. 6. 配列処理
  7. 7. linq.js 今日のお題その1
  8. 8. linq.js  linq.js - LINQ for JavaScript http://linqjs.codeplex.com/  LINQのJavaScript実装  日本人の @neue さん作 統合言語クエリ(LINQ) .NET Framework 3.5において様々な種類のデータ集合に 対して標準化された方法でデータを問い合わせることを 可能にする、言語に統合された機能のことである。
  9. 9. Functions  Enumerableオブジェクト生成  From, Range  フィルタリング  Select, Where, Scan, SelectMany, Zip  順序  OrderBy, OrderByDescending,  コンバート  ToArray, ToObject, ToString  集計  Count, Max, Min, Sum
  10. 10. Example 配列内の偶数だけ2倍して出力
  11. 11. Example 配列の偶数だけ取り出して、2倍して出力
  12. 12. Example JavaScript var array = [101, 20, 2, 42, 33, 47, 52]; array.forEach(function(x, i) { if (x % 2 == 0) { var v = x * 2; console.log(v); } });
  13. 13. Example linq.js var array = [101, 20, 2, 42, 33, 47, 52]; Enumerable.From(array) .Where(function(x){ return x % 2 == 0 }) .Select(function(x){ return x * 2 }) .ForEach(function(x){ console.log(x) });
  14. 14. Example 2 配列の要素の2乗和を求めていき、最初に2000を超えた要素 を求める
  15. 15. Example 2 配列の2乗和を求めていき、2000を超えた最初の要素を出力
  16. 16. Example 2 JavaScript var x = 2, t = 0, twice = [1], temp = [1]; while(true) { var v = x * x, t = v; for(var i = 0; i < twice.length; i++) { t += twice[i]; } twice.push(v); temp.push(t); if (t > 2000) { break; } x++; }
  17. 17. Example 2 linq.js // 1から無限大まで数値をジェネレート [1, 2, 3, 4,...] var result = Enumerable.ToInfinity(1) .Select("$*$") // 二乗 [1, 4, 9, 16,...] .Scan("$+$$") // 和 [1,5,14,30,...] .First("$>2000"); // 2000を超えた最初の要素
  18. 18. Advantage  Enumerableオブジェクトを返すまで評価が遅延される  無限配列を扱える  jQueryの世界とも連携できる  jQueryとlinqは共存
  19. 19. RxJS 今日のお題その2
  20. 20. RxJS  The Reactive Extensions for JavaScript  (Functional) Reactive Programminng のライブラリ  Microsoftから公式に提供されているライブラリ  C#3.0で導入されたライブラリ  そのJavaScript版  イベントをコレクションとして扱える The Reactive Extensions (Rx) is a library for composing asynchronous and event-based programs using observable sequences and LINQ-style query operators.
  21. 21. Reactive Programming var a = 1; var b = a + 1; a = 5; b = ???
  22. 22. Example
  23. 23. Appendex  linq.js & Reactive Extensions for JavaScript(RxJS)入門  http://neue.cc/2010/12/20_290.html  やさしいFunctional reactive programming(概要編)  http://maoe.hatenadiary.jp/entry/20100109/1263059731  linq.js Reference  http://neue.cc/reference.htm

×