假设我们有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 */
}
魔法?
思想?
答案 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;
}
}
}