Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.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_Arrays_Key - Fatal编程技术网

使用Javascript数组将键和值与某个变量匹配的正确方法是什么?

使用Javascript数组将键和值与某个变量匹配的正确方法是什么?,javascript,arrays,key,Javascript,Arrays,Key,我试图在javascript中创建一个函数,以获得与外部变量匹配的值 我创建了一个键/值数组。然后我做了一个函数,它将检查一个值是否与一个变量匹配。然后我将返回这个值的键 function findNumberFromMonth($data) { var obj = { 01: "Jan", 02: "Feb", 03: "Mar", 04: "Apr", 05: "May", 06: "Jun", 07: "Jul", 0

我试图在javascript中创建一个函数,以获得与外部变量匹配的值

我创建了一个键/值数组。然后我做了一个函数,它将检查一个值是否与一个变量匹配。然后我将返回这个值的键

function findNumberFromMonth($data)
{    
var obj = {
    01: "Jan",
    02: "Feb",
    03: "Mar",
    04: "Apr",
    05: "May",
    06: "Jun",
    07: "Jul",
    08: "Aug",
    09: "Sep",
    10: "Oct",
    11: "Nov",
    12: "Dec"
    }

 for(var element in obj)
         {
             if($data == element.value )
                 {
                     $number = element.key
                 }
          return $number;
         }

}
如果我将$data初始化为“Jan”,则预期输出为“01”

但我只有一个未定义的对象。 我可以如何处理


感谢您的回复。

如果您想将月份名称映射到月份编号,则您的对象是向后的:

function findNumberFromMonth($data)
{    
   var months = {
    "Jan": "01",
    "Feb": "02",
    "Mar": "03",
    // ...
    };

    return months[$data];
}
你可以这样做

var obj={
01:“一月”,
02:“二月”,
03:“三月”,
04:“四月”,
05:“五月”,
06:“六月”,
07:“七月”,
08:“八月”,
09:“9月”,
10:“10月”,
11:“11月”,
12:“12月”
}
var key=Object.keys(obj)[Object.values(obj.indexOf(“Jun”)]

console.log(key)
这可以通过
查找
对象来完成。条目

函数findNumberFromMonth(数据){
常数月={
01:“一月”,
02:“二月”,
03:“三月”,
04:“四月”,
05:“五月”,
06:“六月”,
07:“七月”,
08:“八月”,
09:“9月”,
10:“10月”,
11:“11月”,
12:“12月”
};
返回Object.entries(months.find)([key,val])=>data==val[0];
}
console.log(findnumberfromfommonth('Oct'))
当您使用
for(让x在obj中)
x
是对象的

函数findnumberfromfommonth($data)
{    
var obj={
01:“一月”,
02:“二月”,
03:“三月”,
04:“四月”,
05:“五月”,
06:“六月”,
07:“七月”,
08:“八月”,
09:“9月”,
10:“10月”,
11:“11月”,
12:“12月”
}
for(obj中的var键)
{
如果($data==obj[key])返回key;
}
}

console.log(findNumberFromMonth('Jan'))如果同时需要键和值,请使用object.entries并对其进行迭代

const data=“Feb”;
常量对象={
“01”:“Jan”,
“02”:“二月”,
“03”:“三月”,
“04”:“4月”,
“05”:“五月”,
“06”:“六月”,
“07”:“七月”,
“08”:“8月”,
}
for(让Object.entries(obj))的[key,value]{
如果(数据===值)
{
控制台日志(键);
}

}
在if语句中分配$number变量。但是在out-of-if语句中返回它。必须将返回行移到if语句,若并没有返回任何内容,则可以返回false值

function findNumberFromMonth($data) {
  var obj = {
    01: "Jan",
    02: "Feb",
    03: "Mar",
    04: "Apr",
    05: "May",
    06: "Jun",
    07: "Jul",
    08: "Aug",
    09: "Sep",
    10: "Oct",
    11: "Nov",
    12: "Dec"
  }

  for (var key in obj) {
    if ($data === obj[key])
      return key;
  }

  return false;

}

console.log(findNumberFromMonth('Mar'));

没有价值,就是没有对象工作。1)
元素
将是
1
2
等,它没有
属性。2) 无论
if
语句如何,在循环的第一次迭代中,您总是
return
ing。谢谢,这就是我想要的方式。