簡體   English   中英

在 JavaScript 中銷毀數組的對象

[英]Destruct object of array in JavaScript

嗨,伙計們,我有一組對象,我想銷毀它們。 以下是數組的摘錄。

[
  {
    "Area": "Werk Produktivität [%] - Target",
    "Jan": 86.21397507374327,
    "Feb": 86.0570021973368,
    "Mrz": 88.70898346258058,
    "Apr": 85.29801908413164,
    "May": 85.07431241640211
  },
  {
    "Area": "Werk Produktivität [%] - Actual",
    "Jan": 84.17054711398421,
    "Feb": 83.80826026601528,
    "Mrz": 84.11553769971036,
    "Apr": 83.76460916731,
    "May": 82.69773876702813
  }
]

我現在嘗試實現的是將數組拆分為以下內容:

[
  {
    "Area": "Werk Produktivität [%] - Target",
    "Jan": 86.21397507374327,

  },
  {
    "Area": "Werk Produktivität [%] - Target",
    "Feb": 86.0570021973368,
   
  },
  {
    "Area": "Werk Produktivität [%] - Target",
    "Mrz": 88.70898346258058,

  },
  {
    "Area": "Werk Produktivität [%] - Target",
    "Apr": 85.29801908413164,

  },
  {
    "Area": "Werk Produktivität [%] - Target",
    "May": 85.07431241640211,
  },
  {
    "Area": "Werk Produktivität [%] - Actual",
    "Jan": 84.17054711398421,

  },
  {
    "Area": "Werk Produktivität [%] - Actual",
    "Feb": 83.80826026601528,
  },
  {
    "Area": "Werk Produktivität [%] - Actual",
    "Mrz": 84.11553769971036,

  },
    {
    "Area": "Werk Produktivität [%] - Actual",
    "Apr": 83.76460916731,
  },
   {
    "Area": "Werk Produktivität [%] - Actual",
    "May": 82.69773876702813
  }

我正在考慮以下列方式使用...rest參數,但我只得到數組的最后 5 項。 請注意,obj 是數組對象的摘錄。

const fn = ({ Area, ...rest }) =>
  Object.values(rest)
    .map(Month => ({
      Area,
      Month
    }))
       


})
const result = fn(obj)

不確定obj in result = fn(obj)在這里做什么。 我認為您正在數組上調用map並獲取結果二維數組中的第一項。 您只需要使用fn作為回調在數組上調用flatMap

const output = inputArray.flatMap(fn)

或者

const output = inputArray.map(fn).flat()

fn也需要稍微調整一下。 您需要獲取rest對象的全部內容,因為您還需要對象的密鑰

Object.entries(rest)
      .map(([key, value]) => ({ Area, [key]: value }))

 const input = [ { "Area": "Werk Produktivität [%] - Target", "Jan": 86.21397507374327, "Feb": 86.0570021973368, "Mrz": 88.70898346258058, "Apr": 85.29801908413164, "May": 85.07431241640211 }, { "Area": "Werk Produktivität [%] - Actual", "Jan": 84.17054711398421, "Feb": 83.80826026601528, "Mrz": 84.11553769971036, "Apr": 83.76460916731, "May": 82.69773876702813 } ] const fn = ({ Area, ...rest }) => Object.entries(rest) .map(([key,value]) => ({ Area, [key]: value })) const output = input.flatMap(fn) console.log(output)

您可以使用reduceObject.entries來獲得與以下內容相同的結果:

 const data = [ { "Area": "Werk Produktivität [%] - Target", "Jan": 86.21397507374327, "Feb": 86.0570021973368, "Mrz": 88.70898346258058, "Apr": 85.29801908413164, "May": 85.07431241640211 }, { "Area": "Werk Produktivität [%] - Actual", "Jan": 84.17054711398421, "Feb": 83.80826026601528, "Mrz": 84.11553769971036, "Apr": 83.76460916731, "May": 82.69773876702813 } ] const result = data.reduce((res, {Area, ...rest}) => { Object.entries(rest).forEach(([key, value]) => res.push({Area, [key]: value})) return res }, []) console.log(result)

您可以使用函數Array.prototype.reduce及其內部的函數Array.prototype.map來構建所需的對象。

 const arr = [ { "Area": "Werk Produktivität [%] - Target", "Jan": 86.21397507374327, "Feb": 86.0570021973368, "Mrz": 88.70898346258058, "Apr": 85.29801908413164, "May": 85.07431241640211 }, { "Area": "Werk Produktivität [%] - Actual", "Jan": 84.17054711398421, "Feb": 83.80826026601528, "Mrz": 84.11553769971036, "Apr": 83.76460916731, "May": 82.69773876702813 }]; const result = arr.reduce((a, {Area, ...months}) => { return [...a, ...Object.entries(months).map(([month, value]) => ({Area, [month]: value}))]; }, []); console.log(result);
 .as-console-wrapper { max-height: 100% !important; top: 0; }

const ary = [
  {
    "Area": "Werk Produktivität [%] - Target",
    "Jan": 86.21397507374327,
    "Feb": 86.0570021973368,
    "Mrz": 88.70898346258058,
    "Apr": 85.29801908413164,
    "May": 85.07431241640211
  },
  {
    "Area": "Werk Produktivität [%] - Actual",
    "Jan": 84.17054711398421,
    "Feb": 83.80826026601528,
    "Mrz": 84.11553769971036,
    "Apr": 83.76460916731,
    "May": 82.69773876702813
  }
];

const newAry = [];

for(item of ary){
  const {
    Area,
    ...months
  }=item;
  for([k,v] of Object.entries(months)){
    newAry.push({Area,[k]:v});
    
  }
}
console.log(newAry);

希望這對你有幫助!!!

您可以通過使用Destructuring assignment來簡單地實現這一點。

演示

 const arr = [ { "Area": "Werk Produktivität [%] - Target", "Jan": 86.21397507374327, "Feb": 86.0570021973368, "Mrz": 88.70898346258058, "Apr": 85.29801908413164, "May": 85.07431241640211 }, { "Area": "Werk Produktivität [%] - Actual", "Jan": 84.17054711398421, "Feb": 83.80826026601528, "Mrz": 84.11553769971036, "Apr": 83.76460916731, "May": 82.69773876702813 } ]; const res = []; arr.forEach(obj => { const {Area, ...remaining} = obj; Object.keys(remaining).forEach(month => { res.push({ Area, [month]: remaining[month] }) }) }) console.log(res);

暫無
暫無

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

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