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)))