Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从值列表中获取键?_Javascript_List_Underscore.js - Fatal编程技术网

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]
@你能解释一下吗?为了深入了解?顺便说一句,回答不错,谢谢。我用的下划线过滤器不是本地的