簡體   English   中英

使用Javascript數組將鍵和值與某個變量匹配的正確方法是什么?

[英]What is the proper way to match key and value to some variable using Javascript array?

我試圖在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: "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) 

這可以通過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')); 

當使用for(let x in obj) x for(let x in obj) x是對象的key 為...英寸

 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')); 

如果同時需要鍵和值,請使用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); } } 

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM