De retour de l'objet à partir du _.map()
De sorte que le _.map()
fonction de soulignement ne renvoie pas à un objet, mais il leur faut. Est-il un moyen pour elle de revenir exactement le même objet qu'il faut?
var _ = require("underscore");
var cars = {
"mom": {
"miles": "6",
"gas": "4"
},
"dad": {
"miles": "6",
"gas": "4"
}
}
var regurgitate_cars = _.map(cars, function(value, key){
return value;
});
/*
[ { miles: '6', gas: '4' }, { miles: '6', gas: '4' } ]
*/
var regurgitate_cars = _.map(cars, function(value, key){
var transfer = {};
transfer[key] = value;
return transfer;
});
/*
[ { mom: { miles: '6', gas: '4' } },
{ dad: { miles: '6', gas: '4' } } ]
*/
- Qu'essayez-vous de réaliser? Superficiel/profond copie d'un objet?
- Voir mapValues pour soulignement github.com/jashkenas/underscore/issues/220
- _.réduire() doit être accepté de répondre à
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
_.object()
à son tour renvoie un objet.Que de le faire directement avec
_.map
, il vous faudrait réécrire la carte pour le faire.return [key, value]
pour que cela fonctionne ...?_.map()
retournera toujours un tableau, mais vous pouvez obtenir le comportement avec_.réduire()
:Noter que cette volonté de les modifier et de retour de l'objet d'origine, si vous voulez une copie, vous pouvez fournir un objet vide comme troisième argument, qui sera utilisé comme
memo
argument sur le premier appel de la fonction anonyme:map
retourne unarray
donc il n'y a aucun moyen que vous pourriez obtenir de lui revenir à l'objet original à écrire votre propre. Voir la documentation:Il n'y a aucun moyen de retourner un objet avec la mise en œuvre actuelle de la carte. Il a été suggéré que la bibliothèque ajouter un
.mapValues()
fonction qui permettrait de faire ce que vous aimez. Voici comment vous pourriez ajouter à votre code:Maintenant, vous pouvez utiliser mapValues pour renvoyer un nouvel objet: