如何有条件地更新对象的属性?

时间:2019-05-14 23:41:56

标签: javascript

我有一个名为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中进行更新?

2 个答案:

答案 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);