问题背景: 开发中遇到这种需求,一个数组中是如下格式的对象,能不能根据 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个赞
把“百”放到一个数组中,“十”放到另一个数组中
两层循环组合成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)
添加回答
举报
0/150
提交
取消