Існує досить багато способів отримати результат, за яким ви прагнете. Розбиваємо їх на категорії:
Значення ES6 лише :
Основний метод для цього - Object.values . Але використання Object.keys і Array.map ви могли б також отримати до очікуваного результату:
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]))
Ключ та значення ES6 :
Використовуючи динамічні / обчислювані властивості map та ES6 та руйнуючи, ви можете зберегти ключ та повернути об’єкт з карти.
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
})))
Цінності Лодаша :
Метод, розроблений для цього, _.values
однак є "ярлики", як _.map
і корисний метод, _.toArray
який також повертає масив, що містить лише значення від об'єкта. Ви також можете _.map
хоч _.keys
і отримати значення від об'єкта, використовуючи obj[key]
позначення.
Примітка: _.map
при передачі об'єкта використовується його baseMap
обробник, який в основному forEach
є властивостями об'єкта.
_.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>
Ключ і значення Лодаша :
// 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>
Зауважте, що у наведених вище прикладах використовується ES6 (функції стрілок та динамічні властивості). Ви можете використовувати lodash _.fromPairs
та інші методи для складання об'єкта, якщо ES6 є проблемою.