定义 JavaScript 对象文字,以便数组中的所有对象都存在属性?

Define JavaScript object literal so that the properties exists for all objects in an array?

我用默认值定义了一个 JavaScript 对象文字,以便我的模板稍后可以访问它们:

self.emails = [{
    address: "",
    validation: {
        warning: false,
        message: "",
    }
}];

这适用于 self.emails[0],但我还需要存在 self.emails[1]self.emails[4] 的属性。有没有比键入更好的方法来完成此操作:

self.emails = [{
    address: "",
    validation: {
        warning: false,
        message: "",
    }
},
    address: "",
    validation: {
        warning: false,
        message: "",
    }
},
    address: "",
    validation: {
        warning: false,
        message: "",
    }
},
    address: "",
    validation: {
        warning: false,
        message: "",
    }
},
    address: "",
    validation: {
        warning: false,
        message: "",
    }
}];

使用简单的 for 循环:

self.emails = []
for (let i = 0; i < 5; i++) {
  self.emails.push({
    address: "",
    validation: {
      warning: false,
      message: "",
    }
  })
}

我会按照以下方式完成这项工作;

var selfEmails = [{
    address: "",
    validation: {
        warning: false,
        message: "",
    }
}],
longSelfEmails = Array(...Array(5)).map(o => { o = Object.assign({},(selfEmails[0]));
                                               o.validation = Object.assign({},o.validation);
                                               return o;
                                             }),
      modified = longSelfEmails.map((o,i) => {o.validation.message = i;
                                              o.address = "addr_0"+i;
                                              return o;
                                             });
console.log(modified);

现在它们都是一个单独的对象。