これらのパラメータはどちらもオブジェクトのリストです。どちらもプロパティNameを含んでいます。プロパティNameが等しい場所のプロパティをいくつか投影したいと思います。以下は正しい結果を示しています。しかし、誰かがそれを1つのトラバーサルにリファクタリングする手助けをすることができますか?このreduceとmap関数の連鎖方法
export function fieldProjections(docTypeFields, recordFields) {
const recordsByName = recordFields.reduce(function (rec, field) {
rec[field.Name] = field;
return rec;
}, {});
const fields = docTypeFields.map(dt => {
return {
'Name': dt.Name,
'RawValue': recordsByName[dt.Name].RawValue,
'Type': dt.DataType,
'Value': recordsByName[dt.Name].Value,
'Id': dt.DocumentTypeFieldID
};
});
return fields;
}
* "1つのトラバーサルにそれをリファクタリング?" * - なぜ?現在のコードは、入力配列ごとに1回しか移動しないので、どのようにしてそれを追跡するのか分かりません。さて、すべてのプロパティを一度に作成するために単一のオブジェクトリテラルを使用した場合、 '.map()'コールバックは整理される可能性があります。 – nnnnnn
あなたがすでに持っているものよりずっと良くなることはありません。しかし、ハッシュ/ "連想配列"の代わりにMapを使うことができます。 –
私は1つのトラバースが誤称であったとします。私は上記を単一の式で実行したかったのです。 – monkeyjumps