想象你有一个装满商品的“购物车”,每件商品都有一个唯一的“卖家ID”。
现在我想在数据库PER sellerID中创建一个订单。
这意味着我必须将购物车(基本上是一个装满商品的数组)拆分为单独的数组,并按各自的sellerID进行拆分。
当然,我可以迭代sellerID,也可以,if sellerID == item.sellerID
填充其他数组,但这就是我现在遇到的问题。
有了cart中单个sellerIDs
的数量,我可以在迭代每个数组之前声明数组,但这对我来说似乎不实用。
作为附加信息:我用函数式编程语言来做这个,在这里变量是“不可变的”,一旦创建它们就不再是可改变的。
我也更多的是关于原则和是否有一个务实的解决这个问题的办法。
PS:我已经决定重写购物车,这样从一开始就已经按卖家ID排序,然后我可以直接在购物车的各个卖家ID上迭代创建订单。
不过,如果我以前没有在购物车中按SellerID排序,我对是否有面向解决方案的方法很感兴趣。
2条答案
按热度按时间vcudknz31#
FWIW,这里是没有
Enum.group_by/2
的解决方案。枚举中的所有内容都可以用Enum.reduce/3
实现。oxiaedzo2#
我的数据是这样的:
我需要的是这样的东西:
正如Aleksei Matiushkin所提到的,
Enum.group_by/2
就可以了。我只是用以下代码尝试了一下:我得到的是:
但是,如果
Enum.group_by/2
不存在,或者如果我使用一种完全不同的语言,例如像Java这样的面向对象编程语言,我将如何解决这个问题呢?我只是对如何实现这一点感兴趣,我不认为这对我来说是直截了当的研究
Enum.group_by/2
实现。