두 매개 변수는 모두 개체 목록입니다. 둘 다 속성 Name을 포함합니다. 속성 Name이 같은 곳에 해당 속성 중 일부를 투영하고 싶습니다. 다음은 올바른 결과를 제공합니다. 그러나 누군가가 나를 통과하여 하나의 리팩토링을 도와 줄 수 있습니까?이 축소 및 맵 기능 연결 방법
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;
}
* "하나 개의 통과에 리팩토링?"* - 왜? 현재 코드는 입력 배열 당 한 번만 지나치므로 그보다 작은 값을 트래버스 할 수있는 방법은 없습니다. 한 번에 모든 속성을 생성하기 위해 하나의 객체 리터럴을 사용했다면,'.map()'콜백을 정리할 수 있습니다. – nnnnnn
이미 가지고있는 것보다 훨씬 좋아질 것은 없습니다. 하지만 해시/"연관 배열"대신 Map을 사용할 수 있습니다. –
나는 하나의 순회가 잘못된 명칭이라고 생각한다. 나는 위의 것을 하나의 표현으로 수행하기를 원했습니다. – monkeyjumps