Skip to main content
Solved

[Solved] Dynamic buttonAsync labels and values?

  • September 8, 2020
  • 3 replies
  • 27 views

Forum|alt.badge.img+12

Can the buttonAsync be created dynamically?

I have an array of Order Numbers called filteredOrderNames. Can each value of the array serve as the button label?

let selectedOrder = await input.buttonsAsync(
'Select Order Group from List below',
[
    {label: filteredOrdersNames, value: filteredOrders}
]);

Best answer by Justin_Barrett

Yes, this can be done using the map method on the filteredOrdersNames array. Here’s a test I just ran:

let filteredOrdersNames = ["One", "Two", "Three", "Four", "Five", "Six"];
let filteredOrders = [1, 2, 3, 4, 5, 6]

let selectedOrder = await input.buttonsAsync(
    "Select order group from list below",
    filteredOrdersNames.map(item => {return {label: item, value: filteredOrders[filteredOrdersNames.indexOf(item)]}})
)

output.text("Selected Order: " + selectedOrder)

Output:

3 replies

Justin_Barrett
Forum|alt.badge.img+21
  • Inspiring
  • Answer
  • September 8, 2020

Yes, this can be done using the map method on the filteredOrdersNames array. Here’s a test I just ran:

let filteredOrdersNames = ["One", "Two", "Three", "Four", "Five", "Six"];
let filteredOrders = [1, 2, 3, 4, 5, 6]

let selectedOrder = await input.buttonsAsync(
    "Select order group from list below",
    filteredOrdersNames.map(item => {return {label: item, value: filteredOrders[filteredOrdersNames.indexOf(item)]}})
)

output.text("Selected Order: " + selectedOrder)

Output:


Forum|alt.badge.img+12
  • Author
  • Inspiring
  • September 8, 2020

Yes, this can be done using the map method on the filteredOrdersNames array. Here’s a test I just ran:

let filteredOrdersNames = ["One", "Two", "Three", "Four", "Five", "Six"];
let filteredOrders = [1, 2, 3, 4, 5, 6]

let selectedOrder = await input.buttonsAsync(
    "Select order group from list below",
    filteredOrdersNames.map(item => {return {label: item, value: filteredOrders[filteredOrdersNames.indexOf(item)]}})
)

output.text("Selected Order: " + selectedOrder)

Output:


This is brilliant! Thanks so much. It works perfectly.


Forum|alt.badge.img+5
  • New Participant
  • August 13, 2024

4 years later and this post helped me out SO much! Thank you!