读取JS对象,不区分大小写

时间:2015-06-07 18:18:53

标签: javascript

假设我们有Product.Name,Product.Desc和Product.Price的Product对象

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

有没有办法解释不区分大小写的变量?或者我必须做一些正则表达式 .vividworknav{ width:33.333%; height:200px; float:left; padding:0; -webkit-transition: opacity 0.5s ease-out; -moz-transition: opacity 0.5s ease-out; -o-transition: opacity 0.5s ease-out; transition: opacity 0.5s ease-out; background-image: url("http://www.gettyimages.co.uk/gi-resources/images/Homepage/Category-Creative/UK/UK_Creative_462809583.jpg"); } .vividworknav:hover .work-text-content{ opacity: 1.0; } .work-text-content{ background-color: rgba(0,0,0,0.8); width:33.333%; height:100%; opacity: 0; z-index:100; position:absolute; color:white; left:0%; font-size:24px; text-align:center; -webkit-transition: all 500ms cubic-bezier(0.420, 0.000, 0.580, 1.000); -moz-transition: all 500ms cubic-bezier(0.420, 0.000, 0.580, 1.000); -o-transition: all 500ms cubic-bezier(0.420, 0.000, 0.580, 1.000); transition: all 500ms cubic-bezier(0.420, 0.000, 0.580, 1.000); /* ease-in-out */ -webkit-transition-timing-function: cubic-bezier(0.420, 0.000, 0.580, 1.000); -moz-transition-timing-function: cubic-bezier(0.420, 0.000, 0.580, 1.000); -o-transition-timing-function: cubic-bezier(0.420, 0.000, 0.580, 1.000); transition-timing-function: cubic-bezier(0.420, 0.000, 0.580, 1.000); /* ease-in-out */ } 魔法?

思想?

3 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:2)

将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;
      }
   }
}