Удалить повторяющуюся строку и отобразить уникальную строку в Roku

Я создал объект roAssociativeArray и добавил несколько строк в Roku. Как ниже

Nikunj
Ronak
Raxit
Suhag
Nikunj
Suhag
Suhag
Nikunj
Ronak
Nikunj

здесь я попытался удалить повторяющееся значение и отобразить только уникальное значение. Возможно ли это в Roku? Мне нужен был вывод ниже:

Nikunj
Ronak
Raxit
Suhag

В С # это возможно, как показано ниже

ChDate = ChDate.Distinct().ToList();

Но я не знаю, как это работает в Roku.


person Nikunj Chaklasiya    schedule 01.10.2019    source источник


Ответы (1)


Roku не имеет встроенного метода для извлечения уникальных значений из массива, вам нужно создать свой собственный.

Есть несколько способов реализовать это, вот один из вариантов с использованием хэш-таблицы (ассоциативного массива) для отслеживания всех сохраненных значений:

function unique(arr as Object)
  res = []
  table = {}
  for each v in arr
    k = v.toStr()
    if not table.doesExist(k)
      res.push(v)
      table[k] = true
    end if
  end for
  return res
end function

Использование:

dupValues = ["Nikunj", "Ronak", "Raxit", "Suhag", "Nikunj", "Suhag", "Suhag", "Nikunj", "Ronak", "Nikunj"]
uniqueValues = unique(dupValues)
?"uniqueValues "uniqueValues

Выход:

[«Никундж», «Ронак», «Раксит», «Сухаг»]

Обратите внимание, как перед сохранением в хеш-таблице значение преобразуется в строку (в случае, если это не так), так что эта функция также может принимать массив чисел.

dupValues = [3, 3, 4, 1, 6, 7, 6]
uniqueValues = unique(dupValues)
?"uniqueValues "uniqueValues

Выход:

[ 3, 4, 1, 6, 7 ]

person Alejandro Cotilla    schedule 02.10.2019
comment
Спасибо за ваш отличный ответ. Его работа. Оба типа String, а также числовое значение. - person Nikunj Chaklasiya; 02.10.2019