先来看看题目吧:
分析
上面这道题,我们可以将问题拆解,依次将临近的两个数组进行组合,然后向后遍历组合,大致如图所示:
而能实现上述效果的,第一时间应该能够想到 Array.reduce
:
const getResult = (arr1, arr2) => {
if (!Array.isArray(arr1) || !Array.isArray(arr2)) {
return;
}
if (!arr1.length) {
return arr2;
}
if (!arr2.length) {
return arr1;
}
const result = [];
for (let i = 0; i < arr1.length; i++) {
for (let j = 0; j < arr2.length; j++) {
result.push(String(arr1[i]) + String(arr2[j]));
}
}
return result;
};
const findAll = arr => arr.reduce((total, current) => getResult(total, current), []);
最终效果如下:
感兴趣的读者可以看看在线 demo:求二维数组的全排列组合结果
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!