>  Q&A  >  본문

축소 작업을 사용하여 객체 작업

<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粉423694341P粉423694341429일 전488

모든 응답(1)나는 대답할 것이다

  • P粉909476457

    P粉9094764572023-08-19 12:39:09

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

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

    으아악

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

    으아악

    회신하다
    0
  • 취소회신하다