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の場合

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

スプレッド構文

  • JavaScriptMDN</a>

を使うと簡単にできる。

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

# => [2, 4, 6]

なるほどな。

More