sku(笛卡尔积算法)

1 篇文章 0 订阅
本文详细介绍了reduce()函数如何通过迭代计算数组中元素的组合,特别展示了在场景中如何利用它实现类似笛卡尔积的效果。通过实例演示了如何在变量year、color和size上应用reduce(),生成所有可能的组合列表。
摘要由CSDN通过智能技术生成

reduce()函数使用。ruduce()函数第一次计算时将数组的前两个元素进行”组合“(这里的组合可以是数值计算,字符串操作,数组操作,取决于你的使用场景),返回"组合”结果并于下一个元素进行同样的操作,直到最后一个元素操作完

var year = ['2019', '2020'];
var color = ['白色', '灰色', '蓝色'];
var size = ['S', 'M', 'L'];
var list = [year, color, size];
 
function calcDescartes(array) {
  if (array.length < 2) return array[0] || [];
 
  return array.reduce((total, currentValue) => {
    let res = [];
 
    total.forEach(t => {
      currentValue.forEach(cv => {
        if (t instanceof Array) 	// 或者使用 Array.isArray(t)
          res.push([...t, cv]);
        else
          res.push([t, cv]);
      })
    })
    return res;
  })
}
console.log(calcDescartes(list));

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值