一道js的数组算法题

有一个数组:


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]]


至尊宝的传说
浏览 506回答 2
2回答

眼眸繁星

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))

holdtom

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)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript