フォロー

配列をいじるのつらくないですか。
array.filter(e => e.id !== id)とか。
まあ実際は適当なユーティリティ関数にするんだろうけど。

· · SubwayTooter · 1 · 0 · 0

JavaScriptの配列はC#で言えばList<object>みたいなもん。
あとfilterみたいなメソッドは、仕様上はいちいち新しい配列を作ることになってるけど、連鎖させると謎の最適化がかかる。

@204504bySE もしかしてLINQもメソッドチェーンで謎の最適化されてたりする? 確かに毎回新しいインスタンス作るコスト馬鹿にならんと思うんだが……。

LINQもなるね。とはいえLINQの場合はあくまでもIEnumerable<T>だから、最終的にToArray()したりforeachで回したりするときに初めて計算される。
同じ結果を何回も使うなら一度ToArray()などしてから使った方が速いのはありがち。

@204504bySE 確かに。評価されるタイミングがあとのほうになる(遅延)からね。とはいえ、JSのmapなりfilterみたいなノリでいて、デバッグ回してみると、思わぬところから例外が投げられてて、「お前まだ評価されてなかったんかい」ってなることも。IEnumerableの対象が何らかの副作用を受けていたりすると、さらにカオスに。

ログインして会話に参加
Fedibird

様々な目的に使える、日本の汎用マストドンサーバーです。安定した利用環境と、多数の独自機能を提供しています。