简体   繁体   English

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

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

I define a JavaScript object literal with defaults so that my template can access them later: 我使用默认值定义JavaScript对象文字,以便我的模板可以在以后访问它们:

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

This works for self.emails[0] but I also need the properties to exist for self.emails[1] to self.emails[4] . 这适用于self.emails[0]但我还需要self.emails[1]self.emails[4]存在的属性。 Is there a better way to accomplish this than to type: 是否有更好的方法来完成此操作而不是键入:

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: "",
    }
}];

Use a simple for loop: 使用简单的for循环:

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

I would do this job as follows; 我会按照以下方式完成这项工作;

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

Now they are all an individual object. 现在他们都是一个单独的对象。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM