lt8 javascriptで配列をコピーする

18
JavaScriptで配列をコピーする LT#8 Leko

Upload: shingo-inoue

Post on 25-Jun-2015

426 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Lt8 JavaScriptで配列をコピーする

JavaScriptで配列をコピーする LT#8 Leko

Page 2: Lt8 JavaScriptで配列をコピーする

配列 ≒ オブジェクト

jsにおいて、配列もオブジェクト

Page 3: Lt8 JavaScriptで配列をコピーする

JavaScriptとオブジェクト

ß  オブジェクト、配列の代入 = 参照渡し

Page 4: Lt8 JavaScriptで配列をコピーする

破壊的な動作 ß  Array.reverse()

Þ 呼び出し元の配列も変更する

Page 5: Lt8 JavaScriptで配列をコピーする

コピーする方法 ß  あるにはある※ ß  Array.slice(0), Array.concat()

Page 6: Lt8 JavaScriptで配列をコピーする

※プリミティブのみ動作

プリミティブ = 数値, 文字列 etc...

Page 7: Lt8 JavaScriptで配列をコピーする

(◞‸◟)oh…

Page 8: Lt8 JavaScriptで配列をコピーする

JavaScriptパターン ß  浅いコピー

Þ 前述の方法

ß  深いコピー Þ  extendDeep()

Ý そのプロパティがオブジェクト、配列だった場合プロパティのプロパティに対して検査とコピーを再帰的に行う

Page 9: Lt8 JavaScriptで配列をコピーする

値がプリミティブになれば コピー渡しになる

|| そこまで辿る

Page 10: Lt8 JavaScriptで配列をコピーする

extendDeep()

Page 11: Lt8 JavaScriptで配列をコピーする

(´へεへ`*)

Page 12: Lt8 JavaScriptで配列をコピーする

おまけ:配列判定

Page 13: Lt8 JavaScriptで配列をコピーする

あからさまな設計ミス

Page 14: Lt8 JavaScriptで配列をコピーする

色々対策はある

Page 15: Lt8 JavaScriptで配列をコピーする

速度比較

OSX Moutain Lion Nodejs v0.8.17

Page 16: Lt8 JavaScriptで配列をコピーする

isArray最速※

Page 17: Lt8 JavaScriptで配列をコピーする

EcmaScript5環境のみ

=IE8以下は非対応\(^o^)/

Page 18: Lt8 JavaScriptで配列をコピーする

おわり

Web EGG

宣伝:WEB EGG

http://leko.jp

\よろしければアクセスを!/