[英]How can I combine the functions in Javascript
我忙于学习和尝试。 但我又因为这些小事而失败了。 我想让 isValidCard 更短。 我想我现在可以简单地输入 toName 和 toSuit,因为它是上面定义的。 但这不起作用。
'use strict';
const NAMES = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A'];
const SUIT = ['A', 'B', 'C', 'D'];
const toSuit = (number) => number.charAt(number.length - 1);
const toName = (number) => number.slice(0, -1);
const isValidCard = (number) =>
NAMES.includes(number.slice(0, -1)) === SUIT.includes(number.charAt(number.length - 1));
console.log(isValidCard('9A')); // => true
console.log(isValidCard('11A')); // => false
console.log(isValidCard('9X')); // => false
我的尝试没有奏效:
'use strict';
const NAMES = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A'];
const SUIT = ['A', 'B', 'C', 'D'];
const toSuit = (number) => number.charAt(number.length - 1); //nur das letzte Zeichen ausgeben
const toName = (number) => number.slice(0, -1); //das letzte Zeichen bei Ausgabe weglassen
const isValidCard = (number) =>
NAMES.includes(toName) === SUIT.includes(toSuit);
console.log(isValidCard('9A')); // => true
console.log(isValidCard('11A')); // => false
console.log(isValidCard('9X')); // => false
您需要一个逻辑 AND &&
来比较两个值是否为true
,或者至少为true 。
顺便说一句,一个好主意是根据内容选择变量名,在这种情况下使用更好的card
而不是number
,这会产生误导和混淆,因为其中没有数字。
'use strict'; const NAMES = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A'], SUIT = ['A', 'B', 'C', 'D'], toSuit = card => card.slice(-1), toName = card => card.slice(0, -1), isValidCard = card => NAMES.includes(toName(card)) && SUIT.includes(toSuit(card)); console.log(isValidCard('9A')); // => true console.log(isValidCard('11A')); // => false console.log(isValidCard('9X')); // => false
如果我根据第一个代码 output 了解您想要实现的目标,您只需在您创建的 function 中传递数字参数。
只需更新以下代码:
const isValidCard = (number) =>
NAMES.includes(toName(number)) === SUIT.includes(toSuit(number));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.