Có khá nhiều cách để có được kết quả mà bạn đang theo đuổi. Hãy phá vỡ chúng trong các danh mục:
Chỉ giá trị ES6 :
Phương thức chính cho điều này là Object.values . Nhưng bằng cách sử dụng Object.keys và Array.map, bạn cũng có thể đạt được kết quả như mong đợi:
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]))
Khóa & giá trị ES6 :
Sử dụng các thuộc tính động / tính toán của bản đồ và ES6 và phá hủy, bạn có thể giữ lại khóa và trả về một đối tượng từ bản đồ.
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
})))
Chỉ có giá trị tạm thời :
Tuy nhiên, phương thức được thiết kế cho điều này là _.values
có "phím tắt" như thế _.map
và phương thức tiện ích _.toArray
cũng sẽ trả về một mảng chỉ chứa các giá trị từ đối tượng. Bạn cũng có thể _.map
mặc dù _.keys
và nhận các giá trị từ đối tượng bằng cách sử dụng obj[key]
ký hiệu.
Lưu ý: _.map
khi được thông qua, một đối tượng sẽ sử dụng baseMap
trình xử lý của nó , về cơ bản là forEach
trên các thuộc tính của đối tượng.
_.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>
Mã khóa & giá trị :
// 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>
Lưu ý rằng trong các ví dụ trên, ES6 được sử dụng (các hàm mũi tên và thuộc tính động). Bạn có thể sử dụng lodash _.fromPairs
và các phương thức khác để soạn một đối tượng nếu ES6 là một vấn đề.