이것은 내 입력입니다:{field1: {field2:'123', field3:{field4:'123'}}}
대상은 다음과 같습니다:{field1: {update: {field2:'123', field3: {update: {field4:'123'}}
제가 시도한 방법은 다음과 같습니다.
function updateDictHelper(obj) { Object.entries(obj).reduce((updateClause = {}, [키, 값]) => { if (값 유형 !== '객체') { return {... updateClause, [키]: 값} } 또 다른 { return {... updateClause, [키]: {업데이트: updateDictHelper(값)}} } }) }
하지만 무슨 일이 있어도 작동시킬 수가 없습니다. 저는 Java/TypeScript를 처음 접했고 도움을 주시면 대단히 감사하겠습니다.
두 가지 질문이 있습니다. 첫 번째 질문은 귀하의
updateDirectHelper
函数没有返回任何内容。虽然在这个函数中有一个return
语句,但实际上它是嵌套在reduce
的回调函数(updateClause, [key, value]) => {
中,而不是updateDictHelper
자체에 관한 것입니다.또 다른 질문은
으아악acc
提供默认值。Reduce原生支持可选的第二个参数,该参数将作为acc
의 초기 값을 구하는 방법입니다.가장 좋은 접근 방식은 가능할 때마다 초기 값을 제공하는 것입니다. 포함하지 않으면
.reduce()
将跳过回调的第一个调用,并从将acc
设置为数组中的第一个值开始调用回调函数,并将第二个参数设置为数组中的第二个值。如果您的数组只有一个值,例如在您的情况下,那么这个单个值就是从.reduce()
调用中返回的值,并且您的.reduce()
의 콜백 함수가 호출되지 않습니다.