Sass将带有单个项目的数组视为道具数组

Sass将带有单个项目的数组视为道具数组,sass,Sass,对于.test1和.test2,结果是相同的(如链接中所示)。 我的目标是为.test1获得1,为.test2获得2 你知道有没有类似于@each的东西,如果数组中只有一个项目,它就不会遍历属性。一个解决方法是在“单元素列表”的末尾添加一个, $array1:(“x:1,“y:1”),; $array2:(“x:1,“y:1”),(“x:2,“y:2”); 这将产生长度的预期结果 解释 给定以下代码: $array1:(“x:1,“y:1”); $array2:(“x:1,“y:1”),(

对于.test1和.test2,结果是相同的(如链接中所示)。

我的目标是为.test1获得1,为.test2获得2


你知道有没有类似于@each的东西,如果数组中只有一个项目,它就不会遍历属性。

一个解决方法是在“单元素列表”的末尾添加一个

$array1:(“x:1,“y:1”),;
$array2:(“x:1,“y:1”),(“x:2,“y:2”);
这将产生
长度
的预期结果


解释 给定以下代码:

$array1:(“x:1,“y:1”);
$array2:(“x:1,“y:1”),(“x:2,“y:2”);
.test1{
宽度:长度($array1);
}
.test2{
宽度:长度($array2);
}
$array1
被定义为Sass映射,而
$array2
被定义为Sass列表。当您调用
length
函数时,它的行为将与您可能已经猜到的不同

  • length($array1)
    将生成2,因为映射有两个键值对
  • length($array2)
    将生成2,因为列表有两个值

因此,破解Sass就是强制将
$array1
作为列表而不是地图进行评估。您可以通过结尾的神奇悬空
来实现这一点。

如何在数组中添加逗号(我不能像您在实际应用程序中所显示的那样添加)?请看一下更新的link@YuryHomenok您不需要重新定义变量,只需在其自身定义的末尾添加
$array1:(“x:1,“y:1”)我理解你的观点,但我没有像示例中那样的静态声明。数组来自服务器,我不知道它的长度。所以,我可以总是添加逗号,也可以从不添加逗号。实际上,我似乎能够确定何时添加逗号-我检查一种类型的变量,如果它是映射,则添加逗号,如果不是映射,则不修改变量。