返回具有给定短语(数组)值的键

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)名为cmdCategoryhelp 子键中,并且需要在参数和下一个返回键中满足相同的值这种情况。 (例如:如果键值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)

【讨论】:

以上是关于返回具有给定短语(数组)值的键的主要内容,如果未能解决你的问题,请参考以下文章

JSON 对象为具有值的键返回空字符串

有没有办法避免在 Apollo GraphQL 中返回具有空值的键?

如何根据 PHP 中的键清除具有半重复值的数组数组?

获取字典最小值的键,而该键在数组中

在数组中搜索给定的值,如果成功则返回首个相应的键名?

PHP array_keys