Il existe plusieurs façons d'obtenir le résultat que vous recherchez. Permet de les diviser en catégories:
Valeurs ES6 uniquement :
La méthode principale pour cela est Object.values . Mais en utilisant Object.keys et Array.map, vous pouvez également obtenir le résultat attendu:
Object.values(obj)
Object.keys(obj).map(k => obj[k])
var obj = {
A: {
name: "John"
},
B: {
name: "Ivan"
}
}
console.log('Object.values:', Object.values(obj))
console.log('Object.keys:', Object.keys(obj).map(k => obj[k]))
Clé et valeur ES6 :
En utilisant la carte et les propriétés dynamiques / calculées ES6 et la déstructuration, vous pouvez conserver la clé et renvoyer un objet à partir de la carte.
Object.keys(obj).map(k => ({[k]: obj[k]}))
Object.entries(obj).map(([k,v]) => ({[k]:v}))
var obj = {
A: {
name: "John"
},
B: {
name: "Ivan"
}
}
console.log('Object.keys:', Object.keys(obj).map(k => ({
[k]: obj[k]
})))
console.log('Object.entries:', Object.entries(obj).map(([k, v]) => ({
[k]: v
})))
Valeurs Lodash uniquement :
La méthode conçue pour cela est _.values
cependant qu'il existe des "raccourcis" comme _.map
et la méthode utilitaire _.toArray
qui renverrait également un tableau contenant uniquement les valeurs de l'objet. Vous pouvez également utiliser _.map
le _.keys
et obtenir les valeurs de l'objet en utilisant la obj[key]
notation.
Remarque: une _.map
fois passé, un objet utilise son baseMap
gestionnaire qui est essentiellement forEach
sur les propriétés de l'objet.
_.values(obj)
_.map(obj)
_.toArray(obj)
_.map(_.keys(obj), k => obj[k])
var obj = {
A: {
name: "John"
},
B: {
name: "Ivan"
}
}
console.log('values:', _.values(obj))
console.log('map:', _.map(obj))
console.log('toArray:', _.toArray(obj))
console.log('keys:', _.map(_.keys(obj), k => obj[k]))
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script>
Clé et valeur Lodash :
// Outputs an array with [[KEY, VALUE]]
_.entries(obj)
_.toPairs(obj)
// Outputs array with objects containing the keys and values
_.map(_.entries(obj), ([k,v]) => ({[k]:v}))
_.map(_.keys(obj), k => ({[k]: obj[k]}))
_.transform(obj, (r,c,k) => r.push({[k]:c}), [])
_.reduce(obj, (r,c,k) => (r.push({[k]:c}), r), [])
var obj = {
A: {
name: "John"
},
B: {
name: "Ivan"
}
}
// Outputs an array with [KEY, VALUE]
console.log('entries:', _.entries(obj))
console.log('toPairs:', _.toPairs(obj))
// Outputs array with objects containing the keys and values
console.log('entries:', _.map(_.entries(obj), ([k, v]) => ({
[k]: v
})))
console.log('keys:', _.map(_.keys(obj), k => ({
[k]: obj[k]
})))
console.log('transform:', _.transform(obj, (r, c, k) => r.push({
[k]: c
}), []))
console.log('reduce:', _.reduce(obj, (r, c, k) => (r.push({
[k]: c
}), r), []))
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script>
Notez que dans les exemples ci-dessus, ES6 est utilisé (fonctions fléchées et propriétés dynamiques). Vous pouvez utiliser lodash _.fromPairs
et d'autres méthodes pour composer un objet si ES6 est un problème.