【问题标题】:Get a state name from abbreviation从缩写中获取州名
【发布时间】:2015-11-18 20:57:25
【问题描述】:

我有一个应用程序,如果单击状态,它会返回状态缩写。我想在应用程序中放置一条需要实际状态名称而不是缩写的用户消息。

如果我单击纽约州,我会将“NY”存储在名为 data.name 的变量中。如何使用这些数据根据其缩写获取州的全名?

我正在考虑使用

var getStateInfo = function (abbrev, stateName) {

}

但我不确定我会在函数中放入什么。我也知道这可能有更好的方法。任何帮助都会很棒。谢谢!

【问题讨论】:

    标签: javascript function arguments abbreviation


    【解决方案1】:

    您可以将 javascript 对象用作字典:

    var states = {"NY":"New York", "NJ":"New Jersey"};
    

    并像这样访问它们:

    alert(states["NY"]);
    

    所以返回完整状态名称的函数将像这样工作:

    var getStateFullName = function (stateAbbr) {
      return states[stateAbbr];
    }
    

    【讨论】:

    • 从全名到缩写,你好像走反了。
    • 目前,我无法对此进行排名或将其标记为答案。我不确定为什么。不过,我对此很陌生。有什么想法吗?
    • @MikeManusama 在询问您无法接受答案的地方后会出现一个短窗口,但您现在应该可以单击复选标记以接受它。很高兴它有帮助!
    【解决方案2】:

    你能用case语句吗?是否检查 data.name 并返回适当的大小写?前任。 Switch(data.name) 案例 0 (data.name == "NY") 返回 "New York"

    【讨论】:

    • 缓慢而冗长的方法。
    • 你是对的,但这是实现它的一种方法。
    • 你真的会推荐这样做(而不是使用对象)吗?如果没有,为什么要发布它作为答案?
    • 如果您要发布此答案,请显示正确的switch/case 语法。
    【解决方案3】:

    我有打字稿(可以很容易地修改为js)功能。将我们州的缩写转换为全名,反之亦然

    export default function convertUsStateAbbrAndName(input: string): string | null {
      const toAbbr = input.length !== 2;
    
      const states = [
        ['Alabama', 'AL'],
        ['Alaska', 'AK'],
        ['American Samoa', 'AS'],
        ['Arizona', 'AZ'],
        ['Arkansas', 'AR'],
        ['Armed Forces Americas', 'AA'],
        ['Armed Forces Europe', 'AE'],
        ['Armed Forces Pacific', 'AP'],
        ['California', 'CA'],
        ['Colorado', 'CO'],
        ['Connecticut', 'CT'],
        ['Delaware', 'DE'],
        ['District Of Columbia', 'DC'],
        ['Florida', 'FL'],
        ['Georgia', 'GA'],
        ['Guam', 'GU'],
        ['Hawaii', 'HI'],
        ['Idaho', 'ID'],
        ['Illinois', 'IL'],
        ['Indiana', 'IN'],
        ['Iowa', 'IA'],
        ['Kansas', 'KS'],
        ['Kentucky', 'KY'],
        ['Louisiana', 'LA'],
        ['Maine', 'ME'],
        ['Marshall Islands', 'MH'],
        ['Maryland', 'MD'],
        ['Massachusetts', 'MA'],
        ['Michigan', 'MI'],
        ['Minnesota', 'MN'],
        ['Mississippi', 'MS'],
        ['Missouri', 'MO'],
        ['Montana', 'MT'],
        ['Nebraska', 'NE'],
        ['Nevada', 'NV'],
        ['New Hampshire', 'NH'],
        ['New Jersey', 'NJ'],
        ['New Mexico', 'NM'],
        ['New York', 'NY'],
        ['North Carolina', 'NC'],
        ['North Dakota', 'ND'],
        ['Northern Mariana Islands', 'NP'],
        ['Ohio', 'OH'],
        ['Oklahoma', 'OK'],
        ['Oregon', 'OR'],
        ['Pennsylvania', 'PA'],
        ['Puerto Rico', 'PR'],
        ['Rhode Island', 'RI'],
        ['South Carolina', 'SC'],
        ['South Dakota', 'SD'],
        ['Tennessee', 'TN'],
        ['Texas', 'TX'],
        ['US Virgin Islands', 'VI'],
        ['Utah', 'UT'],
        ['Vermont', 'VT'],
        ['Virginia', 'VA'],
        ['Washington', 'WA'],
        ['West Virginia', 'WV'],
        ['Wisconsin', 'WI'],
        ['Wyoming', 'WY'],
      ];
    
      // So happy that Canada and the US have distinct abbreviations
      const provinces = [
        ['Alberta', 'AB'],
        ['British Columbia', 'BC'],
        ['Manitoba', 'MB'],
        ['New Brunswick', 'NB'],
        ['Newfoundland', 'NF'],
        ['Northwest Territory', 'NT'],
        ['Nova Scotia', 'NS'],
        ['Nunavut', 'NU'],
        ['Ontario', 'ON'],
        ['Prince Edward Island', 'PE'],
        ['Quebec', 'QC'],
        ['Saskatchewan', 'SK'],
        ['Yukon', 'YT'],
      ];
    
      const regions = states.concat(provinces);
    
      let i; // Reusable loop variable
    
      if (toAbbr) {
        input = input.replace(/\w\S*/g, function (txt: string) {
          return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
        });
        for (i = 0; i < regions.length; i++) {
          if (regions[i][0] === input) {
            return regions[i][1];
          }
        }
      } else {
        input = input.toUpperCase();
        for (i = 0; i < regions.length; i++) {
          if (regions[i][1] === input) {
            return regions[i][0];
          }
        }
      }
    
      return null;
    }
    

    初始来源 - github

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      • 1970-01-01
      • 2011-06-16
      • 2023-03-21
      相关资源
      最近更新 更多