Utiliser des opérations de réduction pour opérer sur des objets
P粉423694341
2023-08-18 14:05:11
<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>
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
.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 :