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

问题描述 投票:0回答:6

我想,为了得到相匹配的外部变量的值,使用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;
         }

}

我预计的“01”的输出,如果我初始化$的数据为“一月”。

但我只得到了一个未定义的对象。请问有什么可以处理?

谢谢您的回复。

javascript arrays key
6个回答
0
投票

你可以这样做。

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"
}

var key = Object.keys(obj)[Object.values(obj).indexOf("Jun")]

console.log(key)

0
投票

如果你想要做的是地图月份名称一个月的数字,你的目标是倒退:

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

    return months[$data];
}

0
投票

这可以用findObject.entries来完成:

function findNumberFromMonth(data) {    
  const months = {
      01: "Jan",
      02: "Feb",
      03: "Mar",
      04: "Apr",
      05: "May",
      06: "Jun",
      07: "Jul",
      08: "Aug",
      09: "Sep",
      10: "Oct",
      11: "Nov",
      12: "Dec"
  };
  
  return Object.entries(months).find(([key, val]) => data === val)[0];
}

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

0
投票

如果你需要两个键和值同时,使用object.entries和遍历它。

    const data = "Feb";
    const obj = {
        "01": "Jan",
        "02": "Feb",
        "03": "Mar",
        "04": "Apr",
        "05": "May",
        "06": "Jun",
        "07": "Jul",
        "08": "Aug",
    }
   
    
   for (let [key, value] of Object.entries(obj)) {
        if(data === value )
        {
           console.log(key);
        }
    }

0
投票

当您使用for(let x in obj) x是object.keyfor...in.

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;
   }
}
console.log(findNumberFromMonth('Jan'));

0
投票

您在指定if语句$号变量。但在返回它,如果语句。你必须移动回行的if语句,如果不返回任何东西,你可以返回错误值。

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'));
© www.soinside.com 2019 - 2024. All rights reserved.