为了账号安全,请及时绑定邮箱和手机立即绑定

如何实现数组的笛卡尔积

如何实现数组的笛卡尔积

哈士奇WWW 2019-03-14 18:15:43
问题背景: 开发中遇到这种需求,一个数组中是如下格式的对象,能不能根据 sidePos 的不同做笛卡尔积运算拿到如下的两两不同的 sidePos 字段的字符串。 test 字段没有任何含义,仅表示字段名let arr = [    {sidePos: "百", val: 0, …},    {sidePos: "十", val: 1, …},    {sidePos: "百", val: 2, …},    {sidePos: "百", val: 3, …},    {sidePos: "十", val: 4, …}    ...]现在不知道怎么能给这个数组求笛卡尔积,拿到这样的字段item.value = `{"test": {"sidePos": '百', "val": 0}, {"sidePos": '十', "val": 1}}`item.value = `{"test": {"sidePos": '百', "val": 0}, {"sidePos": '十', "val": 4}}`item.value = `{"test": {"sidePos": '百', "val": 2}, {"sidePos": '十', "val": 1}}`item.value = `{"test": {"sidePos": '百', "val": 2}, {"sidePos": '十', "val": 4}}`item.value = `{"test": {"sidePos": '百', "val": 3}, {"sidePos": '十', "val": 1}}`item.value = `{"test": {"sidePos": '百', "val": 3}, {"sidePos": '十', "val": 4}}`新手求指教~
查看完整描述

1 回答

?
暮色呼如

TA贡献1853条经验 获得超9个赞

  1. 把“百”放到一个数组中,“十”放到另一个数组中

  2. 两层循环组合成n*m个元素的结果数组

伪代码:

for each i in 百

    for each j in 十

        result.push(i + j)

另一种实现方式:


两层循环,内层循环中判断两个元素是否相同,不相同则组合,相同则略过

伪代码:


for each i in arr

    for each j in arr

        if (i.sidePos != j.sidePos)

            result.push(i + j)


查看完整回答
反对 回复 2019-03-26
  • 1 回答
  • 0 关注
  • 479 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信