概述
这一段时间在搞商品后台的系统,其中关于通过商品的销售属性,生成SKU的处理
SKU:最小存货单位(Stock Keeping Unit)在连锁零售门店中有时称单品为一个SKU,定义为保存库存控制的最小可用单位,例如纺织品中一个SKU通常表示规格、颜色、款式。
js实现笛卡尔积
function descartes(...args) {
if (args.length < 2) {
return args[0] || [];
}
return [].reduce.call(args, (col, set) => {
let res = [];
col.forEach(c => {
set.forEach(s => {
let t = [].concat(Array.isArray(c) ? c : [c]);
t.push(s);
res.push(t);
});
});
return res;
});
}
descartes([1, 2, 3], ['a', 'b', 'c'], [8, 9]);
实现效果:
php 实现笛卡尔积
<?php
$arr = [[1, 2, 3], ['a', 'b', 'c'], [8, 9]];
/**
** 实现二维数组的笛卡尔积组合
** $arr 要进行笛卡尔积的二维数组
** $str 最终实现的笛卡尔积组合,可不写
** @return array
**/
function descartes($arr,$str = array()){
//去除第一个元素
$first = array_shift($arr);
//判断是否是第一次进行拼接
if(count($str) > 1) {
foreach ($str as $k => $val) {
foreach ($first as $key => $value) {
//最终实现的格式 1,3,76
//可根据具体需求进行变更
$str2[] = $val.','.$value;
}
}
}else{
foreach ($first as $key => $value) {
//最终实现的格式 1,3,76
//可根据具体需求进行变更
$str2[] = $value;
}
}
//递归进行拼接
if(count($arr) > 0){
$str2 = descartes($arr,$str2);
}
//返回最终笛卡尔积
return $str2;
}
$cartesian_product = descartes($arr);
var_dump($cartesian_product);
?>
一篇讲解SKU不错的博客推荐给看到这篇博客的人;博客地址:
https://blog.csdn.net/liu_jun_y/article/details/53066490
谢谢您的查看