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

时间:2019-02-05 14:08:18

标签: javascript arrays key

我试图在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”。

但是我只有一个未定义的对象。 我该如何处理?

感谢您的答复。

6 个答案:

答案 0 :(得分:0)

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

catch

答案 1 :(得分:0)

您可以这样做。

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

    return months[$data];
}

答案 2 :(得分:0)

这可以通过 try (Stream<String> lines = Files.lines("C:\\Users\\User\\Desktop\\new_1.txt")) { Optional<String[]> studentGradesOpt = lines.map(line -> line.split(",")) .filter(row -> row[0].equalsIgnoreCase(name)) .findFirst(); studentGradesOpt.ifPresent(grades -> calculate(grades)); if (!studentGradesOpt.isPresent()) { System.out.println("Couldn't find student " + name); } } find完成:

Object.entries

答案 3 :(得分:0)

使用for(let x in obj)x是对象的key for...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'));

答案 4 :(得分: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);
        }
    }

答案 5 :(得分:0)

您在if语句中分配$ number变量。但是从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'));