我有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对象的成员并只获取成员,这些成员包含任何字符串并通过它的字符串名称获取字段值。
答案 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'
未包含在其他属性名称中。