如何从对象 return 属性数组并将它们连接起来
How to return from object an array of properties and connect them
我正在玩一个简单的 21 点游戏,但在 returning from object 时卡住了。我的目标是得到return所有的52张牌,但我得到的只是最后一个数组。
let suits = ['Hearts', 'Clubs', 'Diamonds', 'Spades'],
values = ['Ace', 'King', 'Queen', 'Jack',
'Ten', 'Nine', 'Eight', 'Seven', 'Six',
'Five', 'Four', 'Three', 'Two'
];
let deck = [];
function createDeck(deck) {
for (let i = 0; i < values.length; i++) {
for (let j = 0; j < suits.length; j++) {
let card = {
values: values[i],
suit: suits[j]
};
deck.push(card);
}
}
return deck;
}
function cardName(deck) {
let name = [];
for (let i = 0; i < deck.length; i++) {
name = deck[i].values + " of " + deck[i].suit;
}
return name;
}
我已经尝试了一个对象数组,调试了很多次,双循环,for...in 循环,但是 none 成功了。我最好的镜头是 return 是最后一个数组,即 'Two of Spades'。
我非常感谢一些指导
cardName 在 for 循环的每次迭代中覆盖 "name"(这就是为什么您只看到最后一个值的原因)。使用
name.push(deck[i].values + " of " + deck[i].suit)
每次覆盖所有对象但不向数组添加值时,for循环中的函数cardName。这就是为什么您只收到最后一个值的原因。只需将 name = ... 更改为 name.push(...)
补充上述答案(将 name =
切换到 name.push(
将解决问题),这也可能是涉足 Javascript 功能领域的绝佳机会.
function cardName(deck) {
let name = [];
for (let i = 0; i < deck.length; i++) {
name = deck[i].values + " of " + deck[i].suit;
}
return name;
}
可以改写为
function cardName(deck) {
return deck.map(card => card.values + ' of ' + card.suit);
}
至少,如果我对如何在此处创建 deck
对象的假设是正确的。
如果这是您有兴趣探索的领域,请随时与我们联系!
我正在玩一个简单的 21 点游戏,但在 returning from object 时卡住了。我的目标是得到return所有的52张牌,但我得到的只是最后一个数组。
let suits = ['Hearts', 'Clubs', 'Diamonds', 'Spades'],
values = ['Ace', 'King', 'Queen', 'Jack',
'Ten', 'Nine', 'Eight', 'Seven', 'Six',
'Five', 'Four', 'Three', 'Two'
];
let deck = [];
function createDeck(deck) {
for (let i = 0; i < values.length; i++) {
for (let j = 0; j < suits.length; j++) {
let card = {
values: values[i],
suit: suits[j]
};
deck.push(card);
}
}
return deck;
}
function cardName(deck) {
let name = [];
for (let i = 0; i < deck.length; i++) {
name = deck[i].values + " of " + deck[i].suit;
}
return name;
}
我已经尝试了一个对象数组,调试了很多次,双循环,for...in 循环,但是 none 成功了。我最好的镜头是 return 是最后一个数组,即 'Two of Spades'。 我非常感谢一些指导
cardName 在 for 循环的每次迭代中覆盖 "name"(这就是为什么您只看到最后一个值的原因)。使用
name.push(deck[i].values + " of " + deck[i].suit)
每次覆盖所有对象但不向数组添加值时,for循环中的函数cardName。这就是为什么您只收到最后一个值的原因。只需将 name = ... 更改为 name.push(...)
补充上述答案(将 name =
切换到 name.push(
将解决问题),这也可能是涉足 Javascript 功能领域的绝佳机会.
function cardName(deck) {
let name = [];
for (let i = 0; i < deck.length; i++) {
name = deck[i].values + " of " + deck[i].suit;
}
return name;
}
可以改写为
function cardName(deck) {
return deck.map(card => card.values + ' of ' + card.suit);
}
至少,如果我对如何在此处创建 deck
对象的假设是正确的。
如果这是您有兴趣探索的领域,请随时与我们联系!