简体   繁体   English

如何将对象数组中的某些属性合并到另一个数组中?

[英]How to merge some properties in array of objects into another array?

i am receiving a JSON as a response from an API i want to convert that JSON to another array of JSON the response i am getting is 我收到一个JSON作为API的响应我想将该JSON转换为另一个JSON数组我得到的响应是

 0: {date: "dailylogs20190116", nettype: "GSM On-Net", total: 143423725}
 1: {date: "dailylogs20190116", nettype: "Off-Net", total: 212679126}
 2: {date: "dailylogs20190116", nettype: "Int'l", total: 4066210}
 3: {date: "dailylogs20190116", nettype: "Landline", total: 6462665}
 4: {date: "dailylogs20190116", nettype: "On-Net", total: 31375}
 5: {date: "dailylogs20190116", nettype: "Free", total: 0}
 6: {date: "dailylogs20190116", nettype: "Premium", total: 16020}
 7: {date: "dailylogs20190117", nettype: "Landline", total: 7845098}
 8: {date: "dailylogs20190117", nettype: "Off-Net", total: 201740308}
 9: {date: "dailylogs20190117", nettype: "GSM On-Net", total: 143701795}
10: {date: "dailylogs20190117", nettype: "Premium", total: 472590}
11: {date: "dailylogs20190117", nettype: "Int'l", total: 4628890}
12: {date: "dailylogs20190117", nettype: "On-Net", total: 24000}
13: {date: "dailylogs20190117", nettype: "Free", total: 0}
14: {date: "dailylogs20190115", nettype: "Off-Net", total: 207502381}
15: {date: "dailylogs20190115", nettype: "GSM On-Net", total: 150536440}
16: {date: "dailylogs20190115", nettype: "Int'l", total: 4859440}
17: {date: "dailylogs20190115", nettype: "Landline", total: 5838292}
18: {date: "dailylogs20190115", nettype: "On-Net", total: 34500}
19: {date: "dailylogs20190115", nettype: "Free", total: 0}

Now i want a json in such format 现在我想要这种格式的json

{
    dailylogs20190116: {
        nettype: ["GSM ON Net", "Offnet", "int'l", "Landline", "On-Net", "Free", "Premium"],
        total: [143423725, 212679126, 4066210, 6462665, 31375, 0]
    }
    //...and so on
}

i tried 我试过了

let final_json = {};
res.forEach(element => {
    for (i = 0; i < this.logs.length; i++) {
        if (element.date == this.logs[i]) {
            final_json[element.date] = {
                "net": element.nettype,
                "total": element.total
            }
        }
    }
})

the issue i am having with this code is i am only getting last record of each date ie for dailylogs20190116 i am getting Free and total 0 我有这个代码的问题是我只获得每个日期的最后记录,即每日记录20190116我得到免费和总计0

You can use a simple reduce to get the desired output: 您可以使用简单的reduce来获得所需的输出:

 const arr = [{date:"dailylogs20190116",nettype:"GSM On-Net",total:143423725},{date:"dailylogs20190116",nettype:"Off-Net",total:212679126},{date:"dailylogs20190116",nettype:"Int'l",total:4066210},{date:"dailylogs20190116",nettype:"Landline",total:6462665},{date:"dailylogs20190116",nettype:"On-Net",total:31375},{date:"dailylogs20190116",nettype:"Free",total:0},{date:"dailylogs20190116",nettype:"Premium",total:16020},{date:"dailylogs20190117",nettype:"Landline",total:7845098},{date:"dailylogs20190117",nettype:"Off-Net",total:201740308},{date:"dailylogs20190117",nettype:"GSM On-Net",total:143701795},{date:"dailylogs20190117",nettype:"Premium",total:472590},{date:"dailylogs20190117",nettype:"Int'l",total:4628890},{date:"dailylogs20190117",nettype:"On-Net",total:24000},{date:"dailylogs20190117",nettype:"Free",total:0},{date:"dailylogs20190115",nettype:"Off-Net",total:207502381},{date:"dailylogs20190115",nettype:"GSM On-Net",total:150536440},{date:"dailylogs20190115",nettype:"Int'l",total:4859440},{date:"dailylogs20190115",nettype:"Landline",total:5838292},{date:"dailylogs20190115",nettype:"On-Net",total:34500},{date:"dailylogs20190115",nettype:"Free",total:0}] const output = arr.reduce((acc,{date, nettype,total }) => { acc[date] = acc[date] || {nettype: [], total:[]}; acc[date].nettype.push(nettype); acc[date].total.push(total); return acc }, {}) console.log(output) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何根据某些条件合并来自 2 个对象的嵌套数组属性? - How to merge nested array properties from 2 objects based on some conditions? 如何合并对象数组和另一个对象数组 - How to merge array of object and another array of objects 如何将具有相同属性的对象合并到一个数组中? - How to merge objects with the same properties into a single Array? 如何将具有相同属性的对象合并到一个数组中? - How to merge objects with the same properties into an Array? 合并对象数组中的重复项并改变一些属性javascript - Merge duplicates in array of objects and mutate some properties javascript 如何构造一个新的 object 数组,其中包含 JavaScript 中另一个对象数组中的一些已删除属性 - How do I construct a new array of object with some deleted properties from another array of objects in JavaScript 如何合并对象数组仅将属性保留在第一个数组中 - How to merge an array of objects keep only properties in the first array 在JavaScript中,如何合并一个对象数组和另一个对象数组? - In JavaScript, how do I merge an array of objects with another array of objects? 如何在 javascript 中的一个数组中合并另一个数组对象中的数组 - how to merge array inside another array objects in one array in javascript 如何将一个对象数组的属性转换为另一个对象数组 - How to get properties of one array of objects into another array of objects
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM