[英]javascript cannot map array of objects with nested values
尝试使用嵌套在子对象结构中的值来映射对象数组:
const objs = [{
"B": {
"value": 1,
},
"D": {
"value": "45"
},
"E": {
"value": "234"
},
"A": {
"value": "543"
},
"C": {
"value": "250"
}
},...]
结构如下:
[
{ name: 'B', value: 1 },
{ name: 'D', value: '45' },
{ name: 'E', value: '234' },
{ name: 'A', value: '543' },
{ name: 'C', value: '250' }
]
并且映射的结果是undefined
const mapped = objs.map((key, index) => {
Object.keys(key).map(el => ({
name: el
}))
})
示例: Stackblitz
您应该对objs [0]而不是objs进行操作,因为它是一个对象的数组,而不是对象的数组。
let array = []
for(let object in objs[0]){
array.push({
"name": object,
"value": objs[0][object].value
})
}
在Object.keys
缺少return
。 同样,也可以使用Object.entries
代替Object.keys
来获取key
和value
。
const objs = [{ "B": { "value": 1, }, "D": { "value": "45" }, "E": { "value": "234" }, "A": { "value": "543" }, "C": { "value": "250" } }]; const mapped = objs.map((key, _) => { return Object.entries((key)).map(([name, { value }]) => ({ name, value })) }).flat(); console.log(mapped);
您缺少return
语句和value
属性定义。
此外,您可能需要使用flatMap而不是map ,以避免在结果中嵌套数组:
const objs = [{ "B": { "value": 1, }, "D": { "value": "45" }, "E": { "value": "234" }, "A": { "value": "543" }, "C": { "value": "250" } }] const mapped = objs.flatMap((key, index) => { return Object.keys(key).map(el => ({ name: el, value: key[el].value })) }) console.log(mapped)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.