Как получить максимальное значение в массиве на языке шаблонов скорости (VTL) - PullRequest
1 голос
/ 10 марта 2020

Используя Velocity Template Language (VTL), я хотел бы получить максимальное значение массива. Я довольно долго просматривал документацию Apache Velocity, но не смог найти способ сделать это.

Вот мой пример массива:

#set($array = [2,4,12,3,1,4,34,8])
$sorter.sort($array)

В этом примере Я хотел бы получить 34

Ответы [ 2 ]

2 голосов
/ 11 марта 2020

Сортировка массива немного излишня, если вам нужно только максимальное значение.

Если у вас есть доступ к контексту Velocity, лучший вариант - это сделать инструмент Java, который сделает это за вас.

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

#set($max = -10000)
#foreach($val in $array)
  #set($max = $math.max($max,$val))
#end

, что требует присутствия org.apache.velocity.tools.generic.MathTool в контекст. И если это не так, вы все равно можете просто сделать что-то вроде:

#set($max = -10000)
#foreach($val in $array)
  #if($val > $max)
    #set($max = $math.max($max,$val))
  #end
#end
0 голосов
/ 10 марта 2020

Я построил, вероятно, «грязное», но работающее решение для моего спроса. Я сортирую массив и просто ищу последнее значение в списке, принимая размер массива.

#set($array = [2,4,12,3,1,4,34,8])
#set($sortedArray = $sorter.sort($array))
#set($MindIndexStartsFromZero = $math.sub($array.size, 1))
#set($highestValue = $sortedArray.get($MindIndexStartsFromZero))
$highestValue
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...