Фильтрация массива для хранения уникальных значений в Supercollider - PullRequest
0 голосов
/ 10 октября 2018

Массив создается из внешних датчиков, и этот массив ограничен масштабом.

Вот пример кода:

(
~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 ]

1 Ответ

0 голосов
/ 11 октября 2018

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

Вы можете преобразовать массив в набор и обратно, чтобы удалить дублирующиеся элементы.Set - неупорядоченная коллекция, поэтому вам нужно будет отсортировать новый массив, чтобы получить результат, который вам нужен.

...