2015-06-07 172 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; 
     } 
    } 
}