微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在javascript中以以下方式变异json

如何解决如何在javascript中以以下方式变异json

在一次采访中,我被要求对对象数组进行突变,以使数据以以下方式出现

    [
  {
    "companyName": "ABC","members": [
      {
        "id": 13121212,"firstName": "Ray","lastName": "Fernandis","points": 1800,"position": 1
      },{
        "id": 13131313,"firstName": "Carrie","lastName": "Yoda","points": 1200,"position": 2
      }
    ]
  }]

,样本数据如下。

    [
  {
    "communityName": "ABC","lastUpdateTimestamp": {
      "date": {
        "year": 2020,"month": 10,"day": 7
      },"time": {
        "hour": 18,"minute": 6,"second": 5,"nano": 536529000
      }
    },"data": {
      "listChannelsData": [
        {
          "channelId": 1234,"channelName": "BCD","members": [
            {
              "id": 13121212,"position": 1
            }
          ]
        }
      ]
    }
  },{
    "communityName": "DEF","second": 21,"nano": 47894000
      }
    },"data": {
      "listChannelsData": [
        {
          "channelId": 3421,"channelName": "GHI","firstName": "Nicholas","lastName": "Xin","points": 800,"position": 2
            },{
              "id": 13131313,"points": 1000,"position": 1
            }
          ]
        }
      ]
    }
  }
]

对我来说,议程是打印从示例json派生的json,我只能找出这么多的代码,这是stackoverflow的礼貌

function dictionary(data) {
    var map = {};

    data.forEach(item => {
      if (!Array.isArray(map[item.companyName])) {
        map[item.companyName] = [item.data.listChannelsData];        
      } else {
        map[item.communityName].push(item.data.listChannelsData);
      }
    });

    return map;
}

console.log(dictionary(data));

但是现在,当我尝试使用另一个foreach循环为成员获取数据时,我无法访问成员的数据。任何人都可以帮助我成功访问成员数组并在其旁边打印公司名称的部分

解决方法

尝试此代码

var newArray = []
data.map((item,index) => {
newArray[index] = {companyName : item.communityName}
newArray[index].members = item.data.listChannelsData[0].members
})

数据是给定的数据。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。