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