如何从我当前的对象数据数组中创建一个新的对象数组

Posted

技术标签:

【中文标题】如何从我当前的对象数据数组中创建一个新的对象数组【英文标题】:How to make a new array of object from my current array of object data 【发布时间】:2020-10-02 05:22:36 【问题描述】:

我有一个看起来像这样的数据返回。我想创建一个只显示其中一部分的新数组对象

 [
 
    _id: '5ed87ba9ddb4aa0017db8d64',
    solarStokAwal: '120',
    solarStokAkhir: '120',
    solarMinyakMasuk: '123',
    solarMinyakKeluar: '550',
    solarGainLoss: '123',
    pertamaxStokAwal: '550',
    pertamaxStokAkhir: '120',
    pertamaxMinyakMasuk: '550',
    pertamaxMinyakKeluar: '55110',
    pertamaxGainLoss: '550',
    pertaliteStokAwal: '550',
    pertaliteStokAkhir: '120',
    pertaliteMinyakMasuk: '550',
    pertaliteMinyakKeluar: '550',
    pertaliteGainLoss: '550',
    namaUnit: 'edina',
    lokasiUnit: 'gabion',
    owner: '5ed6bf3b8d145b001700ff61',
    __v: 0,
    tanggal: '12 Juni 2020',
    hours: '18.25'
  ,
  
    _id: '5ee30b2491132453bca40ef2',
    solarStokAwal: '12110',
    solarStokAkhir: '120',
    solarMinyakMasuk: '123',
    solarMinyakKeluar: '550',
    solarGainLoss: '123',
    pertamaxStokAwal: '5503',
    pertamaxStokAkhir: '120',
    pertamaxMinyakMasuk: '55220',
    pertamaxMinyakKeluar: '55110',
    pertamaxGainLoss: '550',
    pertaliteStokAwal: '54450',
    pertaliteStokAkhir: '120',
    pertaliteMinyakMasuk: '550',
    pertaliteMinyakKeluar: '550',
    pertaliteGainLoss: '550',
    penjualanPertalite: '320',
    penjualanPertamax: '3121',
    penjualanSolar: '3213',
    namaUnit: 'edina',
    lokasiUnit: 'gabion',
    owner: '5ed6bf3b8d145b001700ff61',
    createdAt: 1591937828020,
    updatedAt: 1591937828020,
    __v: 0,
    tanggal: '12 Juni 2020',
    hours: '11.57'
  
  ]

我希望结果看起来像这样

[
    
       namaUnit : 'Edina',
       lokasiUnit : 'Gabion',
       tanggal : '12 Juni 2020'
       hours : '18.25'
    ,
    
       namaUnit : 'Edina',
       lokasiUnit : 'Gabion',
       tanggal : '12 Juni 2020'
       hours : '11.57'
    ,

]

我必须尝试减少,但这让我感到困惑。请指导我这样做。

【问题讨论】:

【参考方案1】:

您可以使用数组的映射功能来获得所需的结果。

var original = [
  
    _id: '5ed87ba9ddb4aa0017db8d64',
    solarStokAwal: '120',
    solarStokAkhir: '120',
    solarMinyakMasuk: '123',
    solarMinyakKeluar: '550',
    solarGainLoss: '123',
    pertamaxStokAwal: '550',
    pertamaxStokAkhir: '120',
    pertamaxMinyakMasuk: '550',
    pertamaxMinyakKeluar: '55110',
    pertamaxGainLoss: '550',
    pertaliteStokAwal: '550',
    pertaliteStokAkhir: '120',
    pertaliteMinyakMasuk: '550',
    pertaliteMinyakKeluar: '550',
    pertaliteGainLoss: '550',
    namaUnit: 'edina',
    lokasiUnit: 'gabion',
    owner: '5ed6bf3b8d145b001700ff61',
    __v: 0,
    tanggal: '12 Juni 2020',
    hours: '18.25'
  ,
  
    _id: '5ee30b2491132453bca40ef2',
    solarStokAwal: '12110',
    solarStokAkhir: '120',
    solarMinyakMasuk: '123',
    solarMinyakKeluar: '550',
    solarGainLoss: '123',
    pertamaxStokAwal: '5503',
    pertamaxStokAkhir: '120',
    pertamaxMinyakMasuk: '55220',
    pertamaxMinyakKeluar: '55110',
    pertamaxGainLoss: '550',
    pertaliteStokAwal: '54450',
    pertaliteStokAkhir: '120',
    pertaliteMinyakMasuk: '550',
    pertaliteMinyakKeluar: '550',
    pertaliteGainLoss: '550',
    penjualanPertalite: '320',
    penjualanPertamax: '3121',
    penjualanSolar: '3213',
    namaUnit: 'edina',
    lokasiUnit: 'gabion',
    owner: '5ed6bf3b8d145b001700ff61',
    createdAt: 1591937828020,
    updatedAt: 1591937828020,
    __v: 0,
    tanggal: '12 Juni 2020',
    hours: '11.57'
  
];

var filltered = original.map(item => 
  return (
    namaUnit: item.namaUnit,
    lokasiUnit: item.lokasiUnit,
    tanggal: item.tanggal,
    hours: item.hours,
  );
);

console.log(filltered);

【讨论】:

【参考方案2】:

你可以使用 1 map() 2 Destructuring assignment 3Object.assign()

let arr1 = [
     _id: '5ed87ba9ddb4aa0017db8d64', solarStokAwal: '120', solarStokAkhir: '120', solarMinyakMasuk: '123', solarMinyakKeluar: '550', solarGainLoss: '123', pertamaxStokAwal: '550', pertamaxStokAkhir: '120', pertamaxMinyakMasuk: '550', pertamaxMinyakKeluar: '55110', pertamaxGainLoss: '550', pertaliteStokAwal: '550', pertaliteStokAkhir: '120', pertaliteMinyakMasuk: '550', pertaliteMinyakKeluar: '550', pertaliteGainLoss: '550', namaUnit: 'edina', lokasiUnit: 'gabion', owner: '5ed6bf3b8d145b001700ff61', __v: 0, tanggal: '12 Juni 2020', hours: '18.25' ,
     _id: '5ee30b2491132453bca40ef2', solarStokAwal: '12110', solarStokAkhir: '120', solarMinyakMasuk: '123', solarMinyakKeluar: '550', solarGainLoss: '123', pertamaxStokAwal: '5503', pertamaxStokAkhir: '120', pertamaxMinyakMasuk: '55220', pertamaxMinyakKeluar: '55110', pertamaxGainLoss: '550', pertaliteStokAwal: '54450', pertaliteStokAkhir: '120', pertaliteMinyakMasuk: '550', pertaliteMinyakKeluar: '550', pertaliteGainLoss: '550', penjualanPertalite: '320', penjualanPertamax: '3121', penjualanSolar: '3213', namaUnit: 'edina', lokasiUnit: 'gabion', owner: '5ed6bf3b8d145b001700ff61', createdAt: 1591937828020, updatedAt: 1591937828020, __v: 0, tanggal: '12 Juni 2020', hours: '11.57' 
]

let arr2 = arr1.map((namaUnit, lokasiUnit, tanggal, hours) => Object.assign(, namaUnit, lokasiUnit, tanggal, hours));
console.log(arr2);

【讨论】:

【参考方案3】:

你可以简单地使用数组mapMDN

【讨论】:

【参考方案4】:

var data = [
  
    _id: '5ed87ba9ddb4aa0017db8d64',
    solarStokAwal: '120',
    solarStokAkhir: '120',
    solarMinyakMasuk: '123',
    solarMinyakKeluar: '550',
    solarGainLoss: '123',
    pertamaxStokAwal: '550',
    pertamaxStokAkhir: '120',
    pertamaxMinyakMasuk: '550',
    pertamaxMinyakKeluar: '55110',
    pertamaxGainLoss: '550',
    pertaliteStokAwal: '550',
    pertaliteStokAkhir: '120',
    pertaliteMinyakMasuk: '550',
    pertaliteMinyakKeluar: '550',
    pertaliteGainLoss: '550',
    namaUnit: 'edina',
    lokasiUnit: 'gabion',
    owner: '5ed6bf3b8d145b001700ff61',
    __v: 0,
    tanggal: '12 Juni 2020',
    hours: '18.25'
  ,
  
    _id: '5ee30b2491132453bca40ef2',
    solarStokAwal: '12110',
    solarStokAkhir: '120',
    solarMinyakMasuk: '123',
    solarMinyakKeluar: '550',
    solarGainLoss: '123',
    pertamaxStokAwal: '5503',
    pertamaxStokAkhir: '120',
    pertamaxMinyakMasuk: '55220',
    pertamaxMinyakKeluar: '55110',
    pertamaxGainLoss: '550',
    pertaliteStokAwal: '54450',
    pertaliteStokAkhir: '120',
    pertaliteMinyakMasuk: '550',
    pertaliteMinyakKeluar: '550',
    pertaliteGainLoss: '550',
    penjualanPertalite: '320',
    penjualanPertamax: '3121',
    penjualanSolar: '3213',
    namaUnit: 'edina',
    lokasiUnit: 'gabion',
    owner: '5ed6bf3b8d145b001700ff61',
    createdAt: 1591937828020,
    updatedAt: 1591937828020,
    __v: 0,
    tanggal: '12 Juni 2020',
    hours: '11.57'
  
];
   

    var count = 0;
    var tmp =  newArr: [];

    for (var OBJ in data) 
        var tempObj = "namaUnit" :"","lokasiUnit": "";
        tempObj.namaUnit = data[OBJ].namaUnit;
        tempObj.lokasiUnit =  data[OBJ].lokasiUnit;
        tmp.newArr[count] = tempObj;
        
        count++;
    

console.log(tmp);

【讨论】:

以上是关于如何从我当前的对象数据数组中创建一个新的对象数组的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有初始化和特定数量元素的情况下在 Kotlin 中创建对象数组?

如何复制动态分配的对象(具有一个类的 const 成员)

Array.from()方法:通过给定的对象中创建一个数组

使用 Lodash 从键值对数组中创建对象

如何在数组中创建一个新对象

如何在java中的每个arraylist中创建具有不同类型对象的arraylist数组?