Sass 具有目标长度的列表中所有组合的Scss递归函数
有谁能把这个函数变成一个递归的通用函数,这样我就可以用它来检索Sass 具有目标长度的列表中所有组合的Scss递归函数,sass,Sass,有谁能把这个函数变成一个递归的通用函数,这样我就可以用它来检索n大小数的组合 这是我目前拥有的,它只在$size:2 @function combinations($list, $size, $separator: comma){ $result: null; @each $item in $list { @if ($size == 1) { $result: append($result, #{$item}, $separator); } @else
n
大小数的组合
这是我目前拥有的,它只在$size:2
@function combinations($list, $size, $separator: comma){
$result: null;
@each $item in $list {
@if ($size == 1) {
$result: append($result, #{$item}, $separator);
} @else {
@each $val in $list {
$result: join($result, #{$item}#{$val}, $separator);
}
}
}
@return $result;
}
$list: a, b, c;
test {
val: combinations($list, 2);
}
输出大小:1
a、 b,c
输出大小:2
a、 b、c、aa、ab、ac、ba、bb、bc、ca、cb、cc
但是我需要继续使用
$size:n
和n经过多次尝试和大量研究,我终于找到了解决方案
@function combinations($list, $size: length($list), $combs: (), $separator: comma){
@if ($combs == ()) {
$combs: $list;
}
@if ($size == 1) {
@return $combs
}
$newCombs: null;
@each $comb in $combs {
@each $item in $list {
@if not index($newCombs, $comb) {
$newCombs: join($newCombs, #{$comb}#{$item}, $separator);
}
}
}
@return join($combs, #{combinations($list, abs($size - 1), $newCombs)});
}
$list: a, b, c;
$size: n;
组合($list,$size)
将根据$size
输出$list
中所有可能值组合的列表