IBM Watson Assistant,如何从数组中删除多个项目?

IBM Watson Assistant, how can I remove multiple items from an array?

我有一个列表unmentioned_colors = ["red", "green", "blue", "yellow"] 如果我提到多种颜色,我想更新我的 unmentioned_colors 数组,删除我提到的那些。因此,如果我写 "red green",我想将它们从 unmentioned_colors 中删除,它将变为 ["blue"、"yellow"]

我试过了 unmentioned_colors = "<? $unmentioned_colors.removeValue(@colors.values) ?>" 但它不起作用。 如何从数组中删除多个@colors?

Watson Assistant 支持 two methods to remove an item from a JSONArray、remove(使用索引)和 removeValue(使用值)。每种方法只删除一个元素。因此,您需要循环/迭代要删除的元素,然后调用该方法。你能在应用程序中处理这个吗?

另一种方法是研究 SpEL (the expression language) 并使用集合选择/投影。

要从 $unmentioned_colors 中删除所有 @colors 项,应设置上下文变量 $_bool_listchanged,如下所示:

_bool_listchanged = "<? $unmentioned_colors.removeAll(@colors.values) ?>"

此解决方案不需要循环并且可以工作,因为在后台 Watson Assistant 使用 Java 来处理联系人中的项目。所以在这个数组上我们有方法 removeAll 我们可以从 Java.

调用它