返回具有给定短语(数组)值的键
Posted
技术标签:
【中文标题】返回具有给定短语(数组)值的键【英文标题】:Return keys that have value with the given phrase (array) 【发布时间】:2020-09-09 19:40:41 【问题描述】:我的 javascript 数组有问题。我正在尝试创建一个函数,该函数根据特定的 arg 返回具有该 arg 值的键。
我试过的代码:
for(let i in client.commands.size)
let filteredCommands = client.commands.filter(cmd => cmd[i].help.cmdCategory = arg).map(c => c.name)
console.log(filteredCommands)
embed.addField(`$filteredCommands.help.name`, `**Description:** $filteredCommands.help.desc\n**Usage:** \`$client.prefix$filteredCommands.help.usage\`\n**Exxample Usage:** $filteredCommands.help.exampleUsage`, false)
client.commands
它是一个数组,键是命令的名称,命令键中的值(例如。ping
)名为cmdCategory
在help
子键中,并且需要在参数和下一个返回键中满足相同的值这种情况。 (例如:如果键值cmdCategory
具有值fun
,则返回符合此条件的键。这里有什么想法吗?还是谢谢。
【问题讨论】:
cmd[i].help.cmdCategory = arg
= 是赋值,而不是相等。可能是拼写错误。
尽管filteredCommands
在任何情况下都将是一个数组。所以filteredCommands.help
是明显的代码味道
【参考方案1】:
如果你的对象客户端看起来像这个例子那么你可以试试
let arg = 'sh'
let client =
commands: [
[
help:
cmdCategory: 'bash',
name: 'some bash name',
desc: 'description for bash'
,
help:
cmdCategory: 'sh',
name: 'some sh name',
desc: 'description for sh'
]
]
// reduce from [[, ]] to [,]
let commands = client.commands.reduce((prev, next) =>
return prev.concat(next)
)
let filteredCommands = commands.filter(command => command.help.cmdCategory === arg)
console.log(filteredCommands)
filteredCommands.forEach(cmd =>
/* embed.addField(`$cmd.help.name`, `**Description:** $cmd.help.desc\n**Usage:** \`$client.prefix$cmd.help.usage\`\n**Exxample Usage:** $cmd.help.exampleUsage`, false) */
)
// OR you can do this:
filteredCommands = []
client.commands.forEach(cmd =>
cmd.forEach(item =>
if (item.help.cmdCategory === arg)
filteredCommands.push(item)
)
)
console.log(filteredCommands)
【讨论】:
以上是关于返回具有给定短语(数组)值的键的主要内容,如果未能解决你的问题,请参考以下文章