javascript - 在循环中组合 2 个数组中的 2 个对象?

标签 javascript arrays object

我正在使用 JavaScript 组合一组花色对象和一组卡片对象来创建一副纸牌(一组卡片对象)。

我使用 forEach 循环来循环遍历花色,嵌套是卡片的 map 循环。

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);

最佳答案

尝试使用 Object.assign({}, x, y) 而不是 Object.assign(x, y)。当前,您正在通过将 y 的所有属性添加到 x 对象来操作该对象。

// 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); 
        deck.push(obj);
        return obj; 
    });

});

console.log(deck);

关于javascript - 在循环中组合 2 个数组中的 2 个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56083930/

相关文章:

java - Java 中奇怪的对象/类行为

javascript - 从网页javascript获取格式为 "_ (10 RANDOM CHARACTERS) "的所有元素

javascript - 重新构造对象数组的最佳方法是什么?

javascript - Jasmine 与 jQuery Mobile 的兼容性

javascript - 如何以正确的格式打印 2 个数组的值

php - 如何获取数组中的逗号分隔符(,)值?

arrays - 将数据从 Firebase 读取到数组中

javascript - 保存 InDesign 文档后仅运行一次事件监听器吗?

javascript - 为什么我不能对选择框的选项执行 forEach?

javascript - 如何在页面加载后仅运行一次?