Javascript中的三个点

Javascript中的三个点,javascript,Javascript,请告诉我下面代码中的3点是什么意思 在const V=[…V1,…V2,…V3]的情况下很明显,新数组是从V1、V2、V3的所有元素创建的 在…CreateTransfromStateandSymbols(V1,targetStates[0])的情况下,完全令人困惑 函数createTransitionsFromStateAndSymbols中的3个点也令人困惑 谢谢大家! const FSM = require('./FSM'); const createTransitionsFrom

请告诉我下面代码中的3点是什么意思

  • const V=[…V1,…V2,…V3]的情况下很明显,新数组是从V1、V2、V3的所有元素创建的

  • …CreateTransfromStateandSymbols(V1,targetStates[0])的情况下,
    完全令人困惑

  • 函数
    createTransitionsFromStateAndSymbols
    中的3个点也令人困惑

  • 谢谢大家!

    const FSM = require('./FSM');
    
    const createTransitionsFromStateAndSymbols = (symbols, targetState) => symbols.reduce((acc, curValue) => ({
        ...acc,
        [curValue]: targetState,
    }), {});
    
    const createTargetTransitions = (targetStates) => ({
        ...createTransitionsFromStateAndSymbols(V1, targetStates[0]),
        ...createTransitionsFromStateAndSymbols(V2, targetStates[1]),
        ...createTransitionsFromStateAndSymbols(V3, targetStates[2])
    })
    
    const V1 = 'qazwsxedcrfvtgbyhnujmikolp'.split('');
    const V2 =  '!@#$%^&*()'.split('');
    const V3 = '0123456789'.split('');
    
    const V = [...V1, ...V2, ...V3];
    
    const Q = ['q0', 'q1', 'q2', 'q3', 'q4', 'q5', 'q6', 'q7', 'q8', 'q9', 'q10']
    
    const S = 'q0';
    
    const F = ['q10'];
    
    const transitions = {
        q0: createTargetTransitions(['q1', 'q4', 'q7']),
        q1: createTargetTransitions(['q1', 'q2', 'q3']),
        q2: createTargetTransitions(['q2', 'q2', 'q10']),
        q3: createTargetTransitions(['q3', 'q10', 'q3']),
        q4: createTargetTransitions(['q5', 'q4', 'q6']),
        q5: createTargetTransitions(['q5', 'q5', 'q10']),
        q6: createTargetTransitions(['q10', 'q6', 'q6']),
        q7: createTargetTransitions(['q8', 'q9', 'q7']),
        q8: createTargetTransitions(['q8', 'q10', 'q8']),
        q9: createTargetTransitions(['q10', 'q9', 'q9']),
        q10: createTargetTransitions(['q10', 'q10', 'q10']),
    };
    
    const fsm = new FSM(V, Q, S, F, transitions);
    
    const startTime = +(new Date());
    console.log(fsm.test('123qasda')) //false
    const endTime = +(new Date());
    
    console.log(endTime - startTime)
    

    你也可以在谷歌上搜索“Javascript中的三个点”B什么是“完全令人困惑的”?如果你在谷歌上搜索你的确切标题“Javascript中的三个点”,您已经获得了相关的搜索词。下一步将是简单地阅读文档;文档中包含一些简单的示例,您可以在浏览器控制台中尝试。如果在所有这些之后有什么让您感到困惑,请具体询问。
    class FSM {
        /**
         * 
         * @param {String[]} alphbet 
         * @param {String[]} states 
         * @param {String} startState 
         * @param {String[]} finiteStates 
         * @param {Object} transitions 
         */
        constructor(alphbet, states, startState, finiteStates, transitions) {
            this.alphbet = alphbet;
            this.states = states;
            this.currentState = startState;
            this.finiteStates = finiteStates;
            this.transitions = transitions;
        }
    
        _checkExistTransition(state, symbol) {
            return (this.transitions[state] && this.transitions[state][symbol]);
        }
    
        _changeState(symbol) {
            if (this._checkExistTransition(this.currentState, symbol)) {
                this.currentState = this.transitions[this.currentState][symbol];
            } else {
                throw new Error(`No transitions from ${this.currentState} by ${symbol}`);
            }
        }
    
        _checkBelogAlphabet(symbol) {
            if (this.alphbet.includes(symbol)) {
                return true;
            } else {
                throw new Error(`Unknown symbol ${symbol}`);
            }
        }
    
        test(value) {
            for (let symbol of value) {
                this._checkBelogAlphabet(symbol);
                this._changeState(symbol);
            }
    
            return this.finiteStates.includes(this.currentState);
        }
    }
    
    module.exports = FSM;