Javascript 在Object.keys(obj)中获取匹配的键

Javascript 在Object.keys(obj)中获取匹配的键,javascript,Javascript,我有一个包含团队成员的对象 如果incomingMessage包含其中一个键,那么我想返回其中一条关于它们的消息 有没有办法在下面的代码中找到匹配的密钥 const团队={ 汉克:[“好人”,“好人”], 查克:[“混蛋”,“混蛋”] } let incomingMessage='告诉我关于chuck的事'; if(Object.keys(team.indexOf(incomingMessage)>-1){ 控制台日志(团队); //这里有没有办法让我拿到票 //匹配的钥匙?所以在这个例子中,

我有一个包含团队成员的对象

如果
incomingMessage
包含其中一个键,那么我想返回其中一条关于它们的消息

有没有办法在下面的代码中找到匹配的密钥

const团队={
汉克:[“好人”,“好人”],
查克:[“混蛋”,“混蛋”]
}
let incomingMessage='告诉我关于chuck的事';
if(Object.keys(team.indexOf(incomingMessage)>-1){
控制台日志(团队);
//这里有没有办法让我拿到票
//匹配的钥匙?所以在这个例子中,“chuck”

}
逻辑是向后的。。。您需要检查消息中是否存在密钥,而不是相反

比如:

Object.keys(team).forEach(function(key) {
   if (incomingMessage.indexOf(key) > -1){
      console.log('Found ' + key +' in message')
   }
});

我将使用
for in
循环遍历团队的属性,然后在其中使用
indexOf

const team = {
  hank: ['good guy', 'wonderful man'],
  chuck: ['jerk', 'buttmunch']
}

let incomingMessage = 'tell me about chuck';

for (var member in team) {
  if (incomingMessage.indexOf(member) > -1) {
      console.log(team[member]); // your team member information array
 }
}

您的逻辑是相反的,您需要在字符串中查找键,而不是键中的字符串

const团队={
汉克:[“好人”,“好人”],
查克:[“混蛋”,“混蛋”]
}
常量msgCheck=(msg)=>Object.keys(team.filter((k)=>msg.indexOf(k)>-1)
log(msgCheck('tell me about chuck'))
log(msgCheck('tell me about hank'))
log(msgCheck(“告诉我关于查克和汉克的事”)
const团队={
汉克:[“好人”,“好人”],
查克:[“混蛋”,“混蛋”]
}
var incomingMessage='告诉我关于chuck的事';
if(incomingMessage.indexOf(Object.keys(团队))>-1){
警觉(小组);
//这里有没有办法让我拿到票
//匹配的钥匙?所以在这个例子中,“chuck”

}
您需要在消息中查找键,而不是键中的消息。这将更像是一个直接的for循环:对于每个键,如果键在消息中,则显示结果。或者您可以编写一些东西来解析消息中的名称,然后它只是一个键查找。
var arrRecTeam = incomingMessage.split(' ');
var arrTeam = Object.keys(team)


arrTeam.forEach((val, key) => console.log("found at", arrRecTeam.indexOf(val)))