potisanのプログラミングメモ

プログラミング素人です。昔の自分を育ててくれたネット情報に少しでも貢献できるよう、情報を貯めていこうと思っています。Windows環境のC++やC#がメインです。

JavaScript (MDN)のArray反復メソッドとC# (.NET Core 3.1, Microsoft Docs)のLINQ

JavaScript (MDN web docs, 2020/01/14時点)のArrayの反復メソッドを基準としたC# (.NET Core 3.1)のLINQとの比較です。車輪の再発明に該当すると思いますが、JavaScriptの勉強のために。

JavaScript C# 概要
entries(...) Select((item, index) => ...)(直接はなし) 要素のインデックスと値ペアのイテレーターを返す。
every(...) All(item => ...) 全ての要素が条件を満たすことを確認する。
filter(...) Where(item => ) 条件を満たす要素からなる新しい配列を作成する。
find(...) First(item => ...) or FirstOrDefault(item => ...) 条件を満たす最初の要素を検索して返す。
findIndex(...) なし(Array.IndexOf(...)) 条件を満たす最初の要素を検索してインデックスを返す。
forEach(...) ForEach 全ての要素に処理を実行する。
keys(...) なし(System.Enumerable.Range(...)、System.Range) 要素のインデックスのイテレーターを返す。
map(...) Select(item => item) 全ての要素に処理を実行してその結果を新しい配列として返す。注意:UInt8ArrayのようなTypedArrayは結果の型も元のTypedArrayと同一になる場合があります。その場合、変換は予期しない結果を返します。
reduce(...) Aggregate((accumulate, source) => ...) 左から右へ隣接する2要素に処理を行ってまとめ、最終結果を単一の値として返す。
reduceRight(...) なし 右から左へ隣接する2要素に処理を行ってまとめ、最終結果を単一の値として返す。
some(...) Any(item => ...) 条件を満たす要素の存在を確認する。
values(...) AsEnumerable() 要素のイテレーターを返す。
Array.prototype@@iterator AsEnumerable() 要素のイテレーターを返す。

なお、JavaScriptArray.prototype.C#Array.を省略しています。

参考

Enumerable Class (System.Linq) | Microsoft Docs Array - JavaScript | MDN

2021/3/10:この記事は別のブログで投稿した記事を移動したものです。