J'ai essayé de retourner une propriété d'un objet en le filtrant d'abord. Voici ce que j'ai fait:
var characters = [
{ 'name': 'barney', 'age': 36, 'blocked': false },
{ 'name': 'fred', 'age': 40, 'blocked': true },
{ 'name': 'pebbles', 'age': 1, 'blocked': false }
];
_.find(characters, function(chr) {
return chr.age == 40
});
Il retourne l'objet entier où je veux retourner une propriété spécifique. Quelqu'un peut-il me guider, comment puis-je le faire?
Toute aide serait appréciée.
Vous pouvez utiliser la capacité Lodash chaining . Comme son nom l'indique, il vous permet de chaîner des appels de méthodes Lodash. _.filter
et _.map
conviennent ici:
const characters = [
{ 'name': 'barney', 'age': 36, 'blocked': false },
{ 'name': 'fred', 'age': 40, 'blocked': true },
{ 'name': 'pebbles', 'age': 1, 'blocked': false },
]
const names = _(characters)
.filter(c => c.age < 40)
.map('name')
.value()
alert(names)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.3.0/lodash.min.js"></script>
Pour mémoire, voici comment faire en JS pur:
const characters = [
{ 'name': 'barney', 'age': 36, 'blocked': false },
{ 'name': 'fred', 'age': 40, 'blocked': true },
{ 'name': 'pebbles', 'age': 1, 'blocked': false },
]
const names = characters
.filter(c => c.age < 40)
.map(c => c.name)
alert(names)
_.result(_.find(characters, function(obj) {
return obj.age === 40;
}), 'name');
var array = [{a: 1, b: 2}, {a: 3, b: 4}]
array.map(_.property('a')) // => [1, 3]
_.map main courte
var array = [{a: 1, b: 2}, {a: 3, b: 4}]
_.map(array, 'a') // => [1, 3]
Comme elclanrs mentionné dans un commentaire avant solution évidente est simplement d'accéder à la propriété age
après avoir filtré l'objet.
Mais si vous vouliez être fait en méthode, vous pouvez d'abord extraire toutes les valeurs d'âge puis allpy find
fonction sur elles:
var ageValues = _.pluck(characters, 'age'); //returns [36, 40, 1]
var resultAgeValue = _.find(ageValues, function(ageValue) {
return ageValue < 40
});
ou, mieux regarde dans la chaîne:
var resultAgeValue = _(characters).pluck('age').find(function(ageValue) {
return ageValue < 40
});
essayez jsFiddle: http://jsfiddle.net/pqr/j8rL780u/