【问题标题】:Read JS object without case sensitivity不区分大小写读取 JS 对象
【发布时间】:2015-06-07 18:18:53
【问题描述】:

假设我们有一个 Product 对象,其中包含 Product.Name、Product.Desc 和 Product.Price

但由于我们无法控制的原因,我们可能会收到带有小写变量(Product.name、Product.desc、Product.price)的产品对象

有没有办法解释不区分大小写的变量?还是我必须做一些正则表达式.toLowerCase() 魔术?

想法?

【问题讨论】:

标签: javascript


【解决方案1】:

我喜欢 Alex Filatov 的解决方案 (+1)。然而,有时名称变体是事先知道的和/或您可能只想接受某些变体。在这种情况下,我发现这样做更容易:

 Product.Name = Product.Name || Product.name || default.Name;

只需 OR 可接受的名称变体,并可选择添加默认值。

【讨论】:

    【解决方案2】:

    您可以添加一些代码来更正对象的变量名称:

    Product.Name = (Product.Name === undefined ? Product.name : Product.Name);
    

    但是,必须对对象中的每个变量都执行此操作。

    【讨论】:

      【解决方案3】:

      将obj的所有属性与prop进行比较。

      var objSetter = function(prop,val){
        prop = (prop + "").toLowerCase();
        for(var p in obj){
           if(obj.hasOwnProperty(p) && prop == (p+ "").toLowerCase()){
                 obj[p] = val;
                 break;
            }
         }
      }
      

      【讨论】:

        猜你喜欢
        • 2017-10-20
        • 2023-03-29
        • 2012-02-03
        • 2012-06-27
        • 1970-01-01
        • 2016-08-29
        • 2012-12-01
        • 2013-03-06
        • 2020-02-18
        相关资源
        最近更新 更多