簡體   English   中英

如何有條件地創建具有屬性的 JavaScript 對象

[英]How to create JavaScript object with properties conditionally

我正在我的 Angular 控制器中創建一個對象,如下所示。 但是,我需要有條件地設置PasswordConfirm 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM