[英]How to create JavaScript object with properties conditionally
我正在我的 Angular 控制器中創建一個對象,如下所示。 但是,我需要有條件地設置Password
和Confirm Password
屬性。
我目前正在if/else
語句中執行此操作。 如果條件為真,則執行以下代碼,否則執行相同的代碼,無需password
和確認confirm_password
屬性。
我發現這是代碼的重復。 有沒有更好的方法可以在對象內部有條件地提及屬性?
$scope.newStudentForm = {
rules: {
firstname: {
required: true
},
lastname: {
required: true
},
email: {
required: true,
email: true
},
password: {
required: true,
minlength: 6
},
confirm_password: {
required: true,
minlength: 6,
equalTo: "#password"
},
student_role: "required"
},
創建沒有所需屬性的$scope.newStudentForm
。 然后添加了 on 條件
$scope.newStudentForm = {
rules: {
}
};
if(condition){
$scope.newStudentForm.rules.password = {
required: true,
minlength: 6
};
$scope.newStudentForm.rules.confirm_password = {
required: true,
minlength: 6,
equalTo: "#password"
};
}
我會按照Satpal 展示的方式來做,但如果你真的想這樣做,可以在對象初始化程序中這樣做,但這有點復雜:你使用 spread 來展開undefined
或帶有isProtected
的對象:
$scope.newStudentForm = {
rules: {
...(condition
? {
password: {
required: true,
minlength: 6
},
confirm_password: {
required: true,
minlength: 6,
equalTo: "#password"
}
}
: undefined
)
}
};
現場示例:
function example(condition) { return { rules: { ...(condition ? { password: { required: true, minlength: 6 }, confirm_password: { required: true, minlength: 6, equalTo: "#password" } } : undefined ) } }; } console.log("Condition false:"); console.log(example(false)); console.log("Condition true:"); console.log(example(true));
.as-console-wrapper { max-height: 100% !important; }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.