簡體   English   中英

部分展平JavaScript對象

[英]Partially flattening a JavaScript object

我有一個我無法修改的API接收到的JavaScript對象。 我想在工具中使用此數據,但是該工具僅接受存儲在對象根級別的值,例如,我不能使用點表示法訪問下一級的鍵值。

基於下面的示例,我希望能夠訪問shape.colour ,但是可以通過從新的JSON對象引用諸如shape__colour東西來進行訪問。

起始對象示例:

[{
  "id" : 12345,
  "size" : 40,
  "shape": {
     "colour" : 'yellow',
     "dimension" : '2D'
  }
},
{
  "id" : 12346,
  "size" : 50,
  "shape": {
     "colour" : 'blue',
     "dimension" : '3D'
  }
}]

我需要它看起來像什么:

[{
  "id" : 12345,
  "size" : 40,
  "shape__colour": 'yellow',
  "shape__dimension" : '2D;'
  }
},
{
  "id" : 12346,
  "size" : 50,
  "shape__colour": 'blue',
  "shape__dimension" : '3D'
  }
}]

我遇到的其他對象平展函數的示例似乎產生了一個單層數組(完全刪除了對象),而我需要保留單個對象,但要將其中的數據放在一個級別上。

任何幫助將不勝感激!

另一個map功能:

const result = arr.map( 
  ({shape, ...rest}) => ({ shape__colour: shape.colour, shape__dimension: shape.dimension, ...rest })
);

或者形狀具有動態屬性:

const result = arr.map(
 ({shape, ...rest}) => Object.assign(rest, ...Object.keys(shape).map(key => {["shape__"+key] : shape[key]}))
);

您可以使用map返回具有flated shape屬性的新數組:

let result = arr.map(({id, size, shape}) => {
  return {
    id,
    size,
    shape_colour: shape.colour,
    shape_dimension: shape.dimension
  }
});

注意:您也可以在參數列表中解構形狀對象:

let result = arr.map(({
  id,
  size,
  shape: { colour: shape_colour, dimension: shape_dimension }
}) => {
  return {
    id,
    size,
    shape_colour,
    shape_dimension,
  }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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