繁体   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