Оригинал на GitHub
Вопрос
Задача: Собрать в одну строку значения из разных полей через сепаратор, например запятая. Например есть несколько полей: #city
, #street
, #name
, #surname
, #nickname
Бывает так, что не все поля заполнены и у меня выходит только дублирование запятых, типа: City, , Vasily, , Vasea
Или иногда вообще получается: , , , , Vasea
Думал через strSplit, но с этой функцией вообще не разобрался.
= : str`#books + $if{var: "field" = "books"} + #first_attempt + $if{var: "field" = "first_attempt"} + #second_attempt`
if: if(condition: #$field != ""; then: ", "; else: "")
field: $#field
выдаёт ошибку. не пойму где поправить. #$field
,$#field
?
Логически я понимаю, что должно быть, но код... почему #$field тут решетка спереди а тут $#name - а тут после доллара
Ответ
Наиболее эффективный подход — это сделать список из нужных полей, отфильтровать из него пустые значения и превратить в строку через listJoin:
=: listJoin(list: $filtered_list; str: ", ")
filtered_list: listFilter(list: $list; key: "value" != "")
list: listCreate(item: #city; item: #street; item: #name; item: #surname; item: #nickname)