首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用React从获取中转换数据

用React从获取中转换数据
EN

Stack Overflow用户
提问于 2022-02-08 09:34:41
回答 1查看 476关注 0票数 -1

我已经从API中检索了数据,现在试图转换数据以发送POST请求。我希望将匹配的两个用户ID分组,并将它们的公共城市放在一个数组中,而不是单独的对象中。

例如,我检索的数据如下所示:

代码语言:javascript
复制
{
    "events": [
         {
             "city": "city-1",
             "user": "d1177368-2310-11e8-9e2a-9b860a0d9039"
         },
         {
             "city": "city-2",
            "user": "d1177368-2310-11e8-9e2a-9b860a0d9039"
         }
]}

我希望我的POST请求数据看起来类似于这样:

代码语言:javascript
复制
{
    "user": {
        "d1177368-2310-11e8-9e2a-9b860a0d9039": [
            {
                "city": [
                    "city-1",
                    "city-2"
                ]
            }]}}

到目前为止,这是我对请求的反应性组件:

代码语言:javascript
复制
import React, { useEffect, useState } from "react";
import axios from "../data/axios";

export default function Events({ fetchEvents }) {
  const [events, setEvents] = useState([]);

  useEffect(() => {
    async function fetchData() {
      const requests = await axios.get(fetchEvents);
      setEvents(requests.data.events);
      return requests;
    }
    fetchData();
  }, [fetchEvents]);

//here is my issue:
  function createSessions(user, city) {
    if (user === user) {

    }
  }

谢谢

EN

回答 1

Stack Overflow用户

发布于 2022-02-08 10:51:01

迭代events数组,将其还原为具有user对象属性的对象。user对象将来自events数组元素的user值作为键,并且将城市推入city数组属性中。

代码语言:javascript
复制
events.reduce(
  (result, el) => {
    if (!result.user[el.user]) {
      result.user[el.user] = [{ city: [] }];
    }
    result.user[el.user][0].city.push(el.city);
    return result;
  },
  { user: {} }
);

代码语言:javascript
复制
const data = {
  events: [
    {
      city: "city-1",
      user: "d1177368-2310-11e8-9e2a-9b860a0d9039"
    },
    {
      city: "city-2",
      user: "d1177368-2310-11e8-9e2a-9b860a0d9039"
    }
  ]
};

const data2 = data.events.reduce(
  (result, el) => {
    if (!result.user[el.user]) {
      result.user[el.user] = [{ city: [] }];
    }
    result.user[el.user][0].city.push(el.city);
    return result;
  },
  { user: {} }
);

console.log(data2);

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71031515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档