2011-03-19 154 views
1

我有JS對象一個,如:獲取JavaScript對象的字段由字符串名稱模式

{ Name, NameFilter, NameType, ..., Desc, DescName, DescType, ... } 

我想下一個規則來構建新的對象
如果一個包含字段AbcFilter,然後B.Abc = { value: A.Abc, filter: A.AbcFilter, type: A.AbcType}AbcFilterA
換句話說,我想迭代JS對象的成員並獲取只有成員,該成員名稱包含任何字符串,並通過字符串名稱獲取字段值。

回答

1

只是正常循環,並檢查屬性名是否包含'Filter'

var B = {}, i, prefix; 

for(var prop in A) { 
    if(A.hasOwnProperty(prop)) { 
     i = prop.indexOf('Filter'); 
     if(i > -1) { 
      prefix = prop.substr(0, i); 
      B[prefix] = { 
       value: A[prefix], 
       filter: A[prop], 
       type: A[prefix+'Type'] 
      }; 
     } 
    } 
} 

當然,這隻能根據該'Filter'不包含在其他屬性名稱的假設。

參考String.prototype.indexOfString.prototype.substr

相關問題