Javascript 如何从值列表中获取键?
我想根据给定的值列表获取键 这就是我要找的 这是我的目标,Javascript 如何从值列表中获取键?,javascript,list,underscore.js,Javascript,List,Underscore.js,我想根据给定的值列表获取键 这就是我要找的 这是我的目标, my_obj = { "A": "a_id", "B": "b_id", "C": "c_id", "D": "d_id", "E": "status", "F": "start_time", "G": "end_time", "H": "count", "I": "task_desc", "J": "approved", "K": "point", "L": "complex", "
my_obj = {
"A": "a_id",
"B": "b_id",
"C": "c_id",
"D": "d_id",
"E": "status",
"F": "start_time",
"G": "end_time",
"H": "count",
"I": "task_desc",
"J": "approved",
"K": "point",
"L": "complex",
"M": "c_date",
"N": "final_date"
}
my_val = ['c_date', 'final_date', 'my_due_date', 'start_date']
所以,从上面我想得到,[M,N]
我试图反转我的对象以获取。。。一切都很顺利,除了返回键而不是值
这是我试过的
my_obj={
A:A_id,
B:B_id,
C:C_id,
D:D_id,
E:地位,
F:开始时间,
G:结束时间,
H:伯爵,
I:任务描述,
J:批准,
K:重点,
L:复杂,
M:c_日期,
N:最后日期
}
my_val=['c_date'、'final_date'、'my_due_date'、'start_date']
out=u.filtermy\u val,函数v{return}invertmy\u obj[v]}
控制台。注销
这应该对你有用 my_obj={ A:A_id, B:B_id, C:C_id, D:D_id, E:地位, F:开始时间, G:结束时间, H:伯爵, I:任务描述, J:批准, K:重点, L:复杂, M:c_日期, N:最后日期 } my_val=['c_date'、'final_date'、'my_due_date'、'start_date'] var输出=[]; 对于var i=0;我<我的长度;i++{ 对于my_obj中的var键{ 如果我的对象[key]==我的值[i]{ output.pushkey; } } }
console.logoutput 如果您只需要密钥的子集:
let subset = Object.keys(my_obj).filter((key, _) =>
my_val.includes(my_obj[key])
);
my_obj={
A:A_id,
B:B_id,
C:C_id,
D:D_id,
E:地位,
F:开始时间,
G:结束时间,
H:伯爵,
I:任务描述,
J:批准,
K:重点,
L:复杂,
M:c_日期,
N:最后日期
}
让my_val=['c_date'、'final_date'、'my_due_date'、'start_date']
让结果=[];
让我输入我的对象
{
对于let i=0;i<我的值长度;i++
{
如果my_obj[key]==my_val[i]
{
result.pushkey;
}
}
}
console.logresult;
您使用的过滤器不正确。该方法要求回调函数返回一个布尔值,但这里返回一个字符串。如果要返回字符串作为my_val中每个条目的键,则应改用map。可以使用Object.keys获取键数组,并根据my_val数组中是否包含每个键的对应值对其进行筛选;确定数组是否包含某个元素并返回一个布尔值,该值非常适合筛选器:
my_obj={
A:A_id,
B:B_id,
C:C_id,
D:D_id,
E:地位,
F:开始时间,
G:结束时间,
H:伯爵,
I:任务描述,
J:批准,
K:重点,
L:复杂,
M:c_日期,
N:最后日期
}
my_val=['c_date'、'final_date'、'my_due_date'、'start_date']
console.log
Object.keys my_obj.filterk=>my_val.includemy_obj[k]
@你能解释一下吗?为了深入了解?顺便说一句,回答不错,谢谢。我用的下划线过滤器不是本地的