Фильтруйте массив, чтобы он содержал уникальные значения в 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 ]

1 ответ

Решение

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

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

Другие вопросы по тегам