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

一道js的数组算法题

一道js的数组算法题

至尊宝的传说 2019-03-21 18:15:49
有一个数组:const arr = [[1,2],3,[4,5,6]];定义一个函数,传入arr后,返回值为一个二维数组:[[1,3,4],[2,3,4],[1,3,5],[2,3,5],[1,3,6],[2,3,6]]
查看完整描述

2 回答

?
眼眸繁星

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

function f(arr) {

  var ret = []


  function fi(result, i) {

    if (i === -1) {

      ret.push(result)

    } else {

      let items = arr[i]

      if (!Array.isArray(items)) {

        items = [items]

      }

      items.forEach(item => {

        fi([item,...result], i - 1)

      });

    }

  }

  fi([], arr.length - 1)

  return ret

}

const arr = [[1,2],3,[4,5,6]];

console.log(f(arr))


查看完整回答
反对 回复 2019-03-22
?
holdtom

TA贡献1805条经验 获得超10个赞

function multiply(arr1, arr2) {

  let r = []

  arr1 = Array.isArray(arr1) ? arr1 : [arr1]

  arr2 = Array.isArray(arr2) ? arr2 : [arr2]

  arr1.forEach(function(i){

    arr2.forEach(function(j){

      let item = (Array.isArray(i) ? i : [i]).concat(j)

      r.push(item)

    })

  })

  return r

}


const arr = [[1,2],3,[4,5,6]]

let result = arr.reduce((acc, curr) => multiply(acc, curr))

console.log('result', result)


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

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号