【发布时间】:2025-12-30 07:55:11
【问题描述】:
我正在通过使用 javascript 组合一组花色对象和一组卡片对象来创建一副卡片(一组卡片对象)。
我正在使用 forEach 循环来循环花色,并且嵌套的是卡片的地图循环。
console.log 正在返回正确的对象以推送到新数组,但是 .push() 仅使用最后一个花色和最后一张牌附加一个组合对象。
我在哪里做错了?
我尝试了多种不同的循环和方法来追加到一个新数组,但没有运气。 Console.log() 返回正确的值,但我无法将正确的组合对象推送到新数组。
// Deck of Cards
var suits = [
{ suit: "clubs", color: "black" },
{ suit: "spades", color: "black" },
{ suit: "hearts", color: "red" },
{ suit: "diamonds", color: "red" }
];
var family = [
{ name: "2", value: 2 },
{ name: "3", value: 3 },
{ name: "4", value: 4 },
{ name: "5", value: 5 },
{ name: "6", value: 6 },
{ name: "7", value: 7 },
{ name: "8", value: 8 },
{ name: "9", value: 9 },
{ name: "10", value: 10 },
{ name: "J", value: 10 },
{ name: "Q", value: 10 },
{ name: "K", value: 10 },
{ name: "A", value: 1 },
];
var deck = new Array();
suits.forEach(function (x) {
var arr = family.map((y) => {
var obj = Object.assign(x, y);
console.log(obj);
deck.push(obj);
return obj;
});
console.log(arr);
});
console.log(deck);
【问题讨论】:
-
一些注意事项:1.您不需要分配
arr变量,因为它没有在任何地方使用(除了后面的console.log语句),2.您应该使用@ 987654323@ 而不是.map用于内部循环,因为您将所需的对象推送到deck,3. 随着.map更新为.forEach,您应该从中删除返回值 -
@stevendesu 您 100% 正确 - 我正在使用 .map 并将其分配给新阵列以进行故障排除。谢谢!
标签: javascript arrays object