축소 작업을 사용하여 객체 작업
P粉423694341
P粉423694341 2023-08-18 14:05:11
0
1
519
<p>이것은 내 입력입니다:<code>{field1: {field2:'123', field3:{field4:'123'}}}</code></p> <p>대상은 다음과 같습니다:<code>{field1: {update: {field2:'123', field3: {update: {field4:'123'}}</code></p> <p>제가 시도한 방법은 다음과 같습니다.</p> <pre class="brush:php;toolbar:false;">function updateDictHelper(obj) { Object.entries(obj).reduce((updateClause = {}, [키, 값]) => { if (값 유형 !== '객체') { return {... updateClause, [키]: 값} } 또 다른 { return {... updateClause, [키]: {업데이트: updateDictHelper(값)}} } }) }</pre> <p>하지만 무슨 일이 있어도 작동시킬 수가 없습니다. 저는 Java/TypeScript를 처음 접했고 도움을 주시면 대단히 감사하겠습니다. </p>
P粉423694341
P粉423694341

모든 응답(1)
P粉909476457

두 가지 질문이 있습니다. 첫 번째 질문은 귀하의 updateDirectHelper函数没有返回任何内容。虽然在这个函数中有一个return语句,但实际上它是嵌套在reduce的回调函数(updateClause, [key, value]) => {中,而不是updateDictHelper 자체에 관한 것입니다.

또 다른 질문은 acc提供默认值。Reduce原生支持可选的第二个参数,该参数将作为acc의 초기 값을 구하는 방법입니다.

으아악

가장 좋은 접근 방식은 가능할 때마다 초기 값을 제공하는 것입니다. 포함하지 않으면 .reduce()将跳过回调的第一个调用,并从将acc设置为数组中的第一个值开始调用回调函数,并将第二个参数设置为数组中的第二个值。如果您的数组只有一个值,例如在您的情况下,那么这个单个值就是从.reduce()调用中返回的值,并且您的.reduce()의 콜백 함수가 호출되지 않습니다.

으아악
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿