축소 작업을 사용하여 객체 작업
P粉423694341
2023-08-18 14:05:11
<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>
두 가지 질문이 있습니다. 첫 번째 질문은 귀하의
updateDirectHelper
函数没有返回任何内容。虽然在这个函数中有一个return
语句,但实际上它是嵌套在reduce
的回调函数(updateClause, [key, value]) => {
中,而不是updateDictHelper
자체에 관한 것입니다.또 다른 질문은
으아악acc
提供默认值。Reduce原生支持可选的第二个参数,该参数将作为acc
의 초기 값을 구하는 방법입니다.가장 좋은 접근 방식은 가능할 때마다 초기 값을 제공하는 것입니다. 포함하지 않으면
.reduce()
将跳过回调的第一个调用,并从将acc
设置为数组中的第一个值开始调用回调函数,并将第二个参数设置为数组中的第二个值。如果您的数组只有一个值,例如在您的情况下,那么这个单个值就是从.reduce()
调用中返回的值,并且您的.reduce()
의 콜백 함수가 호출되지 않습니다.