簡體   English   中英

javascript無法映射具有嵌套值的對象數組

[英]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來獲取keyvalue

 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM