删除重复的字符串并在 Roku 中显示唯一的字符串

Remove Duplicate String and display unique String in Roku

我创建了一个 roAssociativeArray 对象并在 Roku 中添加了多个字符串。喜欢下面

Nikunj
Ronak
Raxit
Suhag
Nikunj
Suhag
Suhag
Nikunj
Ronak
Nikunj

这里我尝试删除一个重复值,只显示唯一值。在 Roku 中有可能吗? 我需要以下输出:

Nikunj
Ronak
Raxit
Suhag

在 C# 中可能如下所示

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

但我不知道它在 Roku 中如何工作。

Roku 没有从数组中提取唯一值的内置方法,您必须构建自己的方法。

有多种实现方法,这里有一个选项使用散列 table(关联数组)来跟踪所有存储的值:

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" ]

注意在存储到散列 table 之前如何将值转换为字符串(以防万一不是),这样该函数也可以接受数字数组。

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

输出:

[ 3, 4, 1, 6, 7 ]