トップ «前の日記(2018-04-24) 最新 次の日記(2018-05-01)» 編集

2018-04-26 [長年日記]

_ JavaScriptでRubyのArray#replaceのようなことをしたい

どういうことかというと、新しい Array を生成するのではなく同一オブジェクトのまま Array を破壊的に変更したいということ。

Rubyの場合

a = [1, 2, 3]
b = a.map {|e| e * 2}
a.replace(b)

# => [2, 4, 6]

と Array#replace を利用することで既存の Array を新しい Array で置き換えてしまうことができる。オブジェクトとしては同じものを指したまま内容を書き換えてしまうことができるわけだ。

JavaScriptの場合

古い知識のままだと結構面倒くさいんだけど、

スプレッド構文 - JavaScript | MDN

を使うと簡単にできる。

a = [1, 2, 3]
b = a.map(e => e * 2)
a.splice(0, b.length, ...a)

# => [2, 4, 6]

なるほどな。

Tags: JavaScript