过滤数组以包含 Supercollider 中的唯一值

Filter an array to contain unique values in Supercollider

一个数组是从外部传感器创建的,并且该数组被限制在一定范围内。

示例代码如下:

(
~weight = 70;
~array = ((~weight - 12) .. ~weight);
l = Scale.majorPentatonic.degrees; // pentatonic scale
j = (~array).collect { |i| i.nearestInScale(l, 12)}
)

这会生成一个数组,但会重复与音阶匹配的音符,例如:

[ 57, 57, 60, 62, 62, 64, 64, 64, 67, 67, 69, 69, 69 ]

如何将此数组过滤为唯一值,使其看起来像这样:

[ 57, 60, 62, 64, 67, 69 ]

j.as(Set).as(Array).sort;

您可以将 Array 转换为 Set 并再次返回以删除重复项。 Set 是一个无序集合,因此您必须对新数组进行排序才能获得您想要的结果。