JavaScripts之迪卡算法求积(n*n)适用于SKU信息计算等场景
2024-09-05 11:49:04
迪卡算法求积(n * n)
- 使用 array.reduce 的方式实现 笛卡尔积算法
const arr = [
['黑色', '白色', '蓝色'],
['1.2KG', '2.0KG', '3.0KG'],
['a', 'b'],
['aa', 'bb']
]; function descartes(array){
if( array.length < 2 ) return array[0] || []; return array.reduce((pre, cur, index) => {
// 第一次遍历的时候我们可以直接返回当前对象
if(index === 0) {
return cur
}
// 利用 reduce 的方式实现,需要定义一个临时的变量
const _sku = []
// 利用冒泡的方式进行组合
pre.forEach(c => {
cur.forEach(item => {
_sku.push(`${c}:${item}`)
})
})
console.log(_sku)
// 返回新组合的数据
return _sku
}, [])
} // 会输出 3 * 3 * 2 *2 中组合
console.log(descartes(arr));
- 通过组合遍历的方式实现(思路和 reduce 差不多)
let _sku = []
arr.forEach(c => {
if(!_sku.length) {
_sku = c
} else {
const inner = []
c.forEach(c1 => {
inner.push(..._sku.map(item => `${item}:${c1}`))
}) _sku = inner
}
}) console.log(_sku)
最新文章
- Javascript学习笔记:3种检测变量类型的方法
- 基于Metronic的Bootstrap开发框架经验总结(8)--框架功能总体界面介绍
- 多级下拉菜单zz
- PHP开发者常犯的10个MySQL错误
- 初学springMVC搭建框架过程及碰到的问题
- ASP.NET MVC 使用带有短横线的html Attributes
- HTML5培训哪里靠谱
- C++ Primer 5 CH6 函数
- 201521123047 j第五周学习总结
- U盘无法安装win10提示Your PC/Device needs to be repaired
- Java 开发环境配置
- python5 数字类型 字符串类型 列表类型
- Kaldi nnet3的前向计算
- Python学习—数据库篇之练习题
- 01 Windows安装Tensorflow
- 【转载】WIN7访问共享:0x80070035 找不到网络路径解决方法
- 02-Introspector内省设置单个属性
- Java学习笔记之——冒泡排序
- Linux服务器---邮件服务postfix安装
- iOS进阶学习笔记
热门文章
- 【LeetCode】784. Letter Case Permutation 解题报告 (Python&C++)
- 【LeetCode】416. Partition Equal Subset Sum 解题报告(Python & C++)
- 【Java例题】3.4求a+aa+aaa+aaaa+... ...+aa...a(n个
- Java实习生常规技术面试题每日十题Java基础(八)
- Java初学者作业——编写 Java 程序,定义 Java 类 (Point) 用来表示坐标,坐标范围在(0,0)到(100,100)以内,并显示合法的坐标在控制台。
- 【MySQL作业】DDL 和 DML——美和易思使用 DDL 维护数据库表结构应用习题
- Centos8 设置中文
- 官方文档粗读 - Tutorial
- Python之路 - Day4 - Python基础4 (新版)
- Elasticsearch打造全文搜索引擎(一)