Soy bastante nuevo en JS y estoy tratando de codificar un bot de discordia. Ahora tengo una pregunta:
Si tengo una lista como esta:
{ names: [ 'kick' ], category: 'Moderation', description: 'Kicks a user', syntax: '<User> <Reason>', hidden: false, testOnly: true } { names: [ 'send' ], category: 'Config', description: 'Sends a message.', syntax: '<channel> <text>', hidden: false, testOnly: true } { names: [ 'timeout' ], category: 'Moderation', description: 'Times out a user', syntax: '<User> <Time>', hidden: false, testOnly: true }``` (this is all a variable) how can i get for example every command that has the Moderation catagory? So that i have them in an array.
algo como
list.filter(x=>x.category==="Moderation")
debería hacer el truco
lea sobre Array.filter para obtener más información
Puede usar el método de filtro para filtrar elementos seleccionados.
var myList = { names: [ 'kick' ], category: 'Moderation', description: 'Kicks a user', syntax: '<User> <Reason>', hidden: false, testOnly: true } { names: [ 'send' ], category: 'Config', description: 'Sends a message.', syntax: '<channel> <text>', hidden: false, testOnly: true } { names: [ 'timeout' ], category: 'Moderation', description: 'Times out a user', syntax: '<User> <Time>', hidden: false, testOnly: true } var selectedCommands = myList.filter(value => value.category == 'Moderation')
A juzgar por el título, solo desea una matriz de cadenas de los nombres de los comandos.
let disCommands = [ { names: [ 'kick' ], category: 'Moderation', description: 'Kicks a user', syntax: '<User> <Reason>', hidden: false, testOnly: true }, { names: [ 'send' ], category: 'Config', description: 'Sends a message.', syntax: '<channel> <text>', hidden: false, testOnly: true }, { names: [ 'timeout' ], category: 'Moderation', description: 'Times out a user', syntax: '<User> <Time>', hidden: false, testOnly: true } ] let modCommands = disCommands.filter(c => c.category === 'Moderation').flatMap(c => c.names); console.log(modCommands);