我有一个名为options的对象。我需要执行以下操作,如果已设置属性,请对其进行更新,否则请不要执行任何操作:
if (options.A)
options.A = formatMessage(options.A);
if (options.B)
options.B = formatMessage(options.B);
if (options.C)
options.C = formatMessage(options.C);
if (options.D)
options.D = formatMessage(options.D);
是否有更好的方法来检查是否设置了对象的特定属性,然后在纯JavaScript中进行更新?
答案 0 :(得分:2)
遍历键名数组-如果每个键的检索值是真实的,则调用该函数并重新分配它:
['A', 'B', 'C', 'D'].forEach((key) => {
if (options[key]) {
options[key] = formatMessage(options[key]);
}
});
如果仅存在这些键,则可以考虑将.reduce
用于新对象,从而避免不必要的突变:
const formattedOptions = Object.entries(options).reduce((a, [key, val]) => {
a[key] = formatMessage(val);
return a;
}, {});
答案 1 :(得分:1)
您可以考虑使用此选项
const obj = {
'A':'test','B':'test1','C':'test2','D':'test3'
};
Object.keys(obj).map(key=> {
obj[key]=formatMessage(obj[key]);
});
function formatMessage(msg){
return msg + 'translated';
}
console.log(obj);