IBM Watson Assistant, как я могу удалить несколько элементов из массива? - PullRequest
0 голосов
/ 23 мая 2018

У меня есть список unmentioned_colors = ["red", "green", "blue", "yellow"] Если я упомяну несколько цветов, я хочу обновить свой массив unmentioned_colors, удалив те, что я упомянул.Поэтому, если я пишу «красный зеленый», я хочу удалить их из unmentioned_colors, где он станет [«синим», «желтым»]

Я попытался unmentioned_colors = "<? $unmentioned_colors.removeValue(@colors.values) ?>" Но это не работает.Как я могу удалить несколько @colors из моего массива?

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Чтобы удалить все @colors элементы из $unmentioned_colors, необходимо установить переменную контекста $_bool_listchanged, как показано здесь:

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

Это решение не требует цикла и работает, потому что под капотом Watson Assistant использует Java для манипулирования элементами в контакте.Таким образом, в этом массиве у нас есть метод removeAll, который мы можем вызвать из Java.

0 голосов
/ 24 мая 2018

Watson Assistant поддерживает два метода для удаления элемента из JSONArray , удаления (с помощью индекса) и removeValue (с использованием значения).Каждый метод удаляет ровно один элемент.Таким образом, вам нужно будет перебрать / перебрать элементы для удаления, а затем вызвать метод.Не могли бы вы обработать это в приложении?

Другой подход - изучить SpEL (язык выражений) и работать с выбором / проекцией коллекции.

...