Ecmascript 6 如果对象属性与ES6有条件地存在,您将如何向其添加附加?

Ecmascript 6 如果对象属性与ES6有条件地存在,您将如何向其添加附加?,ecmascript-6,javascript-objects,Ecmascript 6,Javascript Objects,想象一下,如果有一个对象具有以下属性 var rules = { confirmedPassword: 'required|min:4|max:10', } 我想要的是: rules = { rules.confirmedPassword && {...rules.confirmedPassword, rules.confirmedPassword: '|same:password'}} 为此: rules = {confirmedPassword: 'required|m

想象一下,如果有一个对象具有以下属性

var rules = {
 confirmedPassword: 'required|min:4|max:10',
}
我想要的是:

rules = { rules.confirmedPassword && {...rules.confirmedPassword, rules.confirmedPassword: '|same:password'}}
为此:

rules = {confirmedPassword: 'required|min:4|max:10|same:password',}
原因是,在react中,我在函数中使用
event.target
,以便稍后执行验证

因此,如果用户用
name=“confirmPassword”
点击
input
元素,不仅会有默认值
required | min:4 | max:10
,而且实际上
“required | min:4 | max:10 | same:password”

validateInputs(event) {
    var { password, confirmPassword } = this.state;
    var { name, value } = event.target;

    var data = {
      password: password,
      confirmPassword: confirmPassword
    };

    var rules = {};
    rules[name] = 'required|min:4|max:10';

    var messages = {
      'password.min': 'Password is too short.',
      'password.max': 'Password is too long.',
      'confirmPassword.min': 'Password is too short.',
      'confirmPassword.max': 'Password is too long.'
    };

    validate(data, rules, messages)
      .then(feedback => console.log(feedback))
      .catch(errors => console.log('foo', errors));

    this.setState({
      [name]: value
    });
  }

提前谢谢

您可以做的是将属性存储在一个数组中,然后将它们合并和/或删除

例如,假设您有4个输入,您可以像这样拥有整个组件:

import React from 'react';

export default class TestComponent extends React.Component {
    DEFAULT_RULES = ['required', 'min:4', 'max:10'];

    validateInputs(event) {
        const { password, confirmPassword } = this.state;
        const { name, value } = event.target;

        // This can be done this way in ES6, you don't need to do password: password
        const data = {
            password,
            confirmPassword
        };

        let rules = {};
        const rulesArr = this.DEFAULT_RULES.concat('same:password');
        rules[name] = rulesArr.join('|');

        validate(data, rules, messages)
            .then(feedback => console.log(feedback))
            .catch(errors => console.log('foo', errors));

        this.setState({
            [name]: value
        });
    }
}
我可能没有完整的背景,但我希望你了解这里发生的事情