Maison  >  Questions et réponses  >  le corps du texte

Utiliser des opérations de réduction pour opérer sur des objets

<p>Voici ma saisie :<code>{field1 : {field2:'123', field3 :{field4:'123'}}}</code></p> <p>La cible est :<code>{field1 : {update : {field2:'123', field3 : {update : {field4:'123'}}</code></p> <p>Voici ce que j'ai essayé : </p> <pre class="brush:php;toolbar:false;">fonction updateDictHelper(obj) { Object.entries(obj).reduce((updateClause = {}, [clé, valeur]) => { if (type de valeur !== 'objet') { return {... updateClause, [clé] : valeur} } autre { return {... updateClause, [clé] : {mise à jour : updateDictHelper(value)}} } }) }</pré> <p>Cependant, je n'arrive pas à le faire fonctionner quoi qu'il arrive. Je suis très nouveau sur Java/TypeScript et toute aide serait grandement appréciée. </p>
P粉423694341P粉423694341429 Il y a quelques jours489

répondre à tous(1)je répondrai

  • P粉909476457

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

    Vous avez deux questions, la première est votre updateDirectHelper函数没有返回任何内容。虽然在这个函数中有一个return语句,但实际上它是嵌套在reduce的回调函数(updateClause, [key, value]) => {中,而不是updateDictHelper elle-même.

    Une autre question que vous vous posez est de savoir comment obtenir la valeur initiale de acc提供默认值。Reduce原生支持可选的第二个参数,该参数将作为acc.

    reduce(callbackFn, initialValue)
    

    La meilleure approche est de fournir une valeur initiale autant que possible. Si vous ne l'incluez pas, la fonction de rappel de .reduce()将跳过回调的第一个调用,并从将acc设置为数组中的第一个值开始调用回调函数,并将第二个参数设置为数组中的第二个值。如果您的数组只有一个值,例如在您的情况下,那么这个单个值就是从.reduce()调用中返回的值,并且您的.reduce() ne sera jamais appelée :

    const arrayWithOneElement = [1];
    const res = arrayWithOneElement.reduce(() => {
      console.log("I never run");
    }); // 注意没有第二个参数
    console.log(res);

    répondre
    0
  • Annulerrépondre