2011-03-19 70 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

相关问题