数组重新组合问题?

const List=[['a1','a2'],['b1','b2']]

List是后台返回数据,长度不固定,内部元素长度不固定,希望组合成下面格式:

Program exited with status code of 0.
const res=[ [ 'a1', 'b1' ], [ 'a1', 'b2' ], [ 'a2', 'b1' ], [ 'a2', 'b2' ] ]

整了半天,请问怎样实现?谢谢.

阅读 1.5k
3 个回答
const List=[['a1','a2'],['b1','b2']]


var ret = []
function f(i, temp) {
  if (i === List.length) {
    return ret.push([...temp])
  }
  List[i].forEach(n => {
    temp[i] = n
    f(i + 1, temp)
  })
}
f(0, [])
console.log(ret)

长度不固定这个条件比较宽泛,相对举例的内容又太简单,不知道你到底要做一个什么样的处理。

const 数据列表 = [['a1', 'a2'], ['b1', 'b2', "b3"]]
结果 = []
for (let 第一个元素所在数组索引 = 0; 第一个元素所在数组索引 < 数据列表.length; 第一个元素所在数组索引++) {
    for (let 第一个元素的索引 in 数据列表[第一个元素所在数组索引]) {
        for (let 第二个元素所在数组索引 = 第一个元素所在数组索引 + 1; 第二个元素所在数组索引 < 数据列表.length; 第二个元素所在数组索引++) {
            for (let 第二个元素索引 in 数据列表[第二个元素所在数组索引]) {
                结果.push([数据列表[第一个元素所在数组索引][第一个元素的索引], 数据列表[第二个元素所在数组索引][第二个元素索引]])
            }
        }
    }
}
console.log(结果)

这玩意挺难懂的,所以我选择用中文,就不写注释了
先解释清楚才能

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题