按字符串名称模式获取JavaScript对象的字段

时间:2011-03-19 10:09:58

标签: javascript

我有JS对象 A 喜欢:

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

我希望按照下一条规则建立新对象 B
如果 A 包含字段AbcFilter,则 A 中的每个B.Abc = { value: A.Abc, filter: A.AbcFilter, type: A.AbcType}都会AbcFilter
换句话说,我想迭代JS对象的成员并只获取成员,这些成员包含任何字符串并通过它的字符串名称获取字段值。

1 个答案:

答案 0 :(得分: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