与Alasql组的组中

发布于 2025-01-26 11:35:20 字数 5382 浏览 3 评论 0原文

我需要帮助来实现对象数组的这种转换。 我正在与Alasql合作。 我需要按玩家进行组。 我试过 alasql('从player中选择得分?在哪里得分组”,[arraygameplayerObjects]) 但是我得到了这个结果

{
  "player": {
    "id": 5,
    "firstName": "Player",
    "lastName": "05",
    "email": "[email protected]"
  }
}

原始的对象:

[
    {
    "player": {"id": 5,"firstName": "Player","lastName": "05","email": "[email protected]"},
    "score": {"id": 5,"score": 0.5,"finishDate": "2022-05-05T16:12:22.038+00:00",
            "game":   {"id": 3,"gameName": "Game 03","gameDate": "2022-05-05T18:12:21.049+00:00"},
            "player": {"id": 5,"firstName": "Player","lastName": "05","email": "[email protected]"}
            }
    },
    {
    "player": {"id": 6,"firstName": "Player","lastName": "06","email": "[email protected]"},
    "score": {"id": 6,"score": 0.5,"finishDate": "2022-05-05T16:12:22.038+00:00",
            "game": {"id": 3,"gameName": "Game 03","gameDate": "2022-05-05T18:12:21.049+00:00"},
            "player": {"id": 6,"firstName": "Player","lastName": "06","email": "[email protected]"}
            }
    },
    {
    "player": {"id": 5,"firstName": "Player","lastName": "05","email": "[email protected]"},
    "score": {"id": 7,"score": 0.5,"finishDate": "2022-05-05T16:12:22.042+00:00",
            "game": {"id": 6,"gameName": "Game 06","gameDate": "2022-05-05T20:12:21.049+00:00"},
            "player": {"id": 5,"firstName": "Player","lastName": "05","email": "[email protected]"}
            }
    },
    {
    "player": {"id": 6,"firstName": "Player","lastName": "06","email": "[email protected]"},
    "score": {"id": 8,"score": 0.5,"finishDate": "2022-05-05T16:12:22.042+00:00",
            "game": {"id": 6,"gameName": "Game 06","gameDate": "2022-05-05T20:12:21.049+00:00"},
            "player": {"id": 6,"firstName": "Player","lastName": "06","email": "[email protected]"}
            }
    }

我需要的最终结果是:

[
    {
    "player": {"id": 5,"firstName": "Player","lastName": "05","email": "[email protected]"},
            "score01": {"id": 5,"score": 0.5,"finishDate": "2022-05-05T16:12:22.038+00:00",
                    "game":   {"id": 3,"gameName": "Game 03","gameDate": "2022-05-05T18:12:21.049+00:00"},
                    "player": {"id": 5,"firstName": "Player","lastName": "05","email": "[email protected]"}
            },
            "score02": {"id": 7,"score": 0.5,"finishDate": "2022-05-05T16:12:22.042+00:00",
                    "game": {"id": 6,"gameName": "Game 06","gameDate": "2022-05-05T20:12:21.049+00:00"},
                    "player": {"id": 5,"firstName": "Player","lastName": "05","email": "[email protected]"}
            }
    },
    {
    "player": {"id": 6,"firstName": "Player","lastName": "06","email": "[email protected]"},
            "score01": {"id": 6,"score": 0.5,"finishDate": "2022-05-05T16:12:22.038+00:00",
                    "game": {"id": 3,"gameName": "Game 03","gameDate": "2022-05-05T18:12:21.049+00:00"},
                    "player": {"id": 6,"firstName": "Player","lastName": "06","email": "[email protected]"}
                    },
            "score02": {"id": 8,"score": 0.5,"finishDate": "2022-05-05T16:12:22.042+00:00",
                    "game": {"id": 6,"gameName": "Game 06","gameDate": "2022-05-05T20:12:21.049+00:00"},
                    "player": {"id": 6,"firstName": "Player","lastName": "06","email": "[email protected]"}
                    }
    }
]

有关如何获得此结果的指南或想法?

I need help to achieve this transformation of an Array of Objects.
I am working with alaSQL.
I need to do a GroupBY by player.
I tried
alasql('SELECT score FROM ? WHERE score GROUP BY player',[arrayGamePlayerObjects])
But I got this result

{
  "player": {
    "id": 5,
    "firstName": "Player",
    "lastName": "05",
    "email": "[email protected]"
  }
}

Original Array of Objects:

[
    {
    "player": {"id": 5,"firstName": "Player","lastName": "05","email": "[email protected]"},
    "score": {"id": 5,"score": 0.5,"finishDate": "2022-05-05T16:12:22.038+00:00",
            "game":   {"id": 3,"gameName": "Game 03","gameDate": "2022-05-05T18:12:21.049+00:00"},
            "player": {"id": 5,"firstName": "Player","lastName": "05","email": "[email protected]"}
            }
    },
    {
    "player": {"id": 6,"firstName": "Player","lastName": "06","email": "[email protected]"},
    "score": {"id": 6,"score": 0.5,"finishDate": "2022-05-05T16:12:22.038+00:00",
            "game": {"id": 3,"gameName": "Game 03","gameDate": "2022-05-05T18:12:21.049+00:00"},
            "player": {"id": 6,"firstName": "Player","lastName": "06","email": "[email protected]"}
            }
    },
    {
    "player": {"id": 5,"firstName": "Player","lastName": "05","email": "[email protected]"},
    "score": {"id": 7,"score": 0.5,"finishDate": "2022-05-05T16:12:22.042+00:00",
            "game": {"id": 6,"gameName": "Game 06","gameDate": "2022-05-05T20:12:21.049+00:00"},
            "player": {"id": 5,"firstName": "Player","lastName": "05","email": "[email protected]"}
            }
    },
    {
    "player": {"id": 6,"firstName": "Player","lastName": "06","email": "[email protected]"},
    "score": {"id": 8,"score": 0.5,"finishDate": "2022-05-05T16:12:22.042+00:00",
            "game": {"id": 6,"gameName": "Game 06","gameDate": "2022-05-05T20:12:21.049+00:00"},
            "player": {"id": 6,"firstName": "Player","lastName": "06","email": "[email protected]"}
            }
    }

The end result I need is :

[
    {
    "player": {"id": 5,"firstName": "Player","lastName": "05","email": "[email protected]"},
            "score01": {"id": 5,"score": 0.5,"finishDate": "2022-05-05T16:12:22.038+00:00",
                    "game":   {"id": 3,"gameName": "Game 03","gameDate": "2022-05-05T18:12:21.049+00:00"},
                    "player": {"id": 5,"firstName": "Player","lastName": "05","email": "[email protected]"}
            },
            "score02": {"id": 7,"score": 0.5,"finishDate": "2022-05-05T16:12:22.042+00:00",
                    "game": {"id": 6,"gameName": "Game 06","gameDate": "2022-05-05T20:12:21.049+00:00"},
                    "player": {"id": 5,"firstName": "Player","lastName": "05","email": "[email protected]"}
            }
    },
    {
    "player": {"id": 6,"firstName": "Player","lastName": "06","email": "[email protected]"},
            "score01": {"id": 6,"score": 0.5,"finishDate": "2022-05-05T16:12:22.038+00:00",
                    "game": {"id": 3,"gameName": "Game 03","gameDate": "2022-05-05T18:12:21.049+00:00"},
                    "player": {"id": 6,"firstName": "Player","lastName": "06","email": "[email protected]"}
                    },
            "score02": {"id": 8,"score": 0.5,"finishDate": "2022-05-05T16:12:22.042+00:00",
                    "game": {"id": 6,"gameName": "Game 06","gameDate": "2022-05-05T20:12:21.049+00:00"},
                    "player": {"id": 6,"firstName": "Player","lastName": "06","email": "[email protected]"}
                    }
    }
]

Any guide or ideas on how to get this result ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梦归所梦 2025-02-02 11:35:20

我认为这会有所帮助!

实施

const groupBy = key => array =>
  array.reduce((objectsByKeyValue, obj) => {
    const value = obj[key];
    objectsByKeyValue[value] = (objectsByKeyValue[value] || []).concat(obj);
    return objectsByKeyValue;
  }, {});

用法

const cars = [
  { brand: 'Audi', color: 'black' },
  { brand: 'Audi', color: 'white' },
  { brand: 'Ferarri', color: 'red' },
  { brand: 'Ford', color: 'white' },
  { brand: 'Peugot', color: 'white' }
];

const groupByBrand = groupBy('brand');
const groupByColor = groupBy('color');

console.log(
  JSON.stringify({
    carsByBrand: groupByBrand(cars),
    carsByColor: groupByColor(cars)
  }, null, 2)
);

输出

{
  "carsByBrand": {
    "Audi": [
      {
        "brand": "Audi",
        "color": "black"
      },
      {
        "brand": "Audi",
        "color": "white"
      }
    ],
    "Ferarri": [
      {
        "brand": "Ferarri",
        "color": "red"
      }
    ],
    "Ford": [
      {
        "brand": "Ford",
        "color": "white"
      }
    ],
    "Peugot": [
      {
        "brand": "Peugot",
        "color": "white"
      }
    ]
  },
  "carsByColor": {
    "black": [
      {
        "brand": "Audi",
        "color": "black"
      }
    ],
    "white": [
      {
        "brand": "Audi",
        "color": "white"
      },
      {
        "brand": "Ford",
        "color": "white"
      },
      {
        "brand": "Peugot",
        "color": "white"
      }
    ],
    "red": [
      {
        "brand": "Ferarri",
        "color": "red"
      }
    ]
  }
}

参考:

I think this can help!

Implementation

const groupBy = key => array =>
  array.reduce((objectsByKeyValue, obj) => {
    const value = obj[key];
    objectsByKeyValue[value] = (objectsByKeyValue[value] || []).concat(obj);
    return objectsByKeyValue;
  }, {});

Usage

const cars = [
  { brand: 'Audi', color: 'black' },
  { brand: 'Audi', color: 'white' },
  { brand: 'Ferarri', color: 'red' },
  { brand: 'Ford', color: 'white' },
  { brand: 'Peugot', color: 'white' }
];

const groupByBrand = groupBy('brand');
const groupByColor = groupBy('color');

console.log(
  JSON.stringify({
    carsByBrand: groupByBrand(cars),
    carsByColor: groupByColor(cars)
  }, null, 2)
);

Output

{
  "carsByBrand": {
    "Audi": [
      {
        "brand": "Audi",
        "color": "black"
      },
      {
        "brand": "Audi",
        "color": "white"
      }
    ],
    "Ferarri": [
      {
        "brand": "Ferarri",
        "color": "red"
      }
    ],
    "Ford": [
      {
        "brand": "Ford",
        "color": "white"
      }
    ],
    "Peugot": [
      {
        "brand": "Peugot",
        "color": "white"
      }
    ]
  },
  "carsByColor": {
    "black": [
      {
        "brand": "Audi",
        "color": "black"
      }
    ],
    "white": [
      {
        "brand": "Audi",
        "color": "white"
      },
      {
        "brand": "Ford",
        "color": "white"
      },
      {
        "brand": "Peugot",
        "color": "white"
      }
    ],
    "red": [
      {
        "brand": "Ferarri",
        "color": "red"
      }
    ]
  }
}

Ref: from

孤君无依 2025-02-02 11:35:20

我在此查询中使用了Alasql,并且可以正常工作。

alasql('SELECT player->id , ARRAY(_) AS gamePlayer_per_player FROM ? WHERE score GROUP BY player->id',[arrayGamePlayerObjects]);

I used alaSQL with this query and works Ok .

alasql('SELECT player->id , ARRAY(_) AS gamePlayer_per_player FROM ? WHERE score GROUP BY player->id',[arrayGamePlayerObjects]);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文