2015-06-07 175 views
3

阅读JS对象假设我们有Product.Name,Product.Desc和Product.Price不区分大小写

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

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

想法?

+0

似乎与这一个:http://stackoverflow.com/questions/21915927/how-to-return-a-result-from-json-with-case-insensitive-search-using-javascript –

+1

http:///stackoverflow.com/questions/30498314/check-for-matching-key-in-object-regardless-of-capitalization – adeneo

回答

3

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

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

只是或可接受的名称变化,并可选地添加一个默认值。

2

你可以添加一些代码来纠正对象的变量名:

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

然而,这会对对象中的所有变量来完成。

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