Удалите дублирующую строку и отобразите уникальную строку в Roku - PullRequest
0 голосов
/ 01 октября 2019

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

Nikunj
Ronak
Raxit
Suhag
Nikunj
Suhag
Suhag
Nikunj
Ronak
Nikunj

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

Nikunj
Ronak
Raxit
Suhag

В C # Это возможно, как показано ниже

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

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

1 Ответ

2 голосов
/ 02 октября 2019

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

Вывод:

["Nikunj", "Ronak", "Raxit", "Suhag"]

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

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

Вывод:

[3, 4, 1, 6, 7]

...