我正在编写一个程序,使用西装和卡牌值制作一副纸牌。我正在运行西装的for循环和西装循环内的卡片的另一个嵌套的for循环,并尝试在称为“ deck”的空数组中打印所有组合(52)。在添加值之后尝试记录卡座数组时,在卡座数组中有字符串的值中,我得到“ NaN”。
我知道NaN的意思是“不是数字”,这就是为什么我在打印数组中的字符串值时遇到此错误。
如何打印字符串值?
代码:
let suits = ["Spades", "Hearts", "Diamonds", "Clubs"];
let cards = ["Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"];
let deck = [];
for (let i = 0; i < suits.length; i++) {
for (let j = 0; j < cards.length; j++) {
deck.push(+cards[j] + "of" + suits[i]);
}
}
console.log(deck[1]);
for (let k = 0; k < deck.length; k++) {
console.log(deck[k]);
}
答案 0 :(得分:2)
deck.push(+cards[j] + "of" + suits[i]);
TO
deck.push(cards[j] + "of" + suits[i]);
unary operator +variable
将尝试将值转换为数字,类似于parseInt()
或Number()
。您无法将字符串"Ace"
强制转换为数字,因此它将返回"NaN"
并将其连接到字符串的开头。
您实际上不需要此一元运算符,因为通过将数字与字符串(+ "of" +
)连接,您已经将整数强制为字符串,这是您要在其中实现的数据类型场景。
JS中的强制: JavaScript type coercion explained
并更简洁地使用 ES6 ..
var deck = [].concat(
...suits.map(suit =>
cards.map(card => card +' of '+ suit)
)
)