【问题标题】:How can I dynammicaly create an object inside a object, on a array in JavaScript如何在 JavaScript 中的数组上动态创建对象内的对象
【发布时间】:2019-06-20 01:49:55
【问题描述】:

如何在另一个对象中动态创建一个对象?

我得到了这个代码:

var lista = [{
        "product": "Dipers",
        "quantity": 2
    },
    {
        "product": "Beear",
        "quantity": 6
    },
    {
        "product": "Bread",
        "quantity": 10
    }
];

但我需要添加新对象,所以它看起来像这样:

var lista = [{
        "product": "Dipers",
        "quantity": 2

        seller1 = {
        "name": "B&J",
        "adress": "that street"
        }
        seller2 = {
        "name": "B&J",
        "adress": "that street"
        }

    },
    {
        "product": "Beear",
        "quantity": 6
    },
    {
        "product": "Bread",
        "quantity": 10
    }
];

如何将seller1seller2 动态添加到现有对象lista

【问题讨论】:

  • 第二个例子不是一个有效的js对象。 seller = {}
  • 你有卖家名单吗,怎么知道哪个卖家属于谁?
  • @kemicofa 我将有一个输入字段,我将在其中获取名称和地址的数据,然后像这样保存。
  • @kemicofa 抱歉,我真的不知道在其中制作一个有效的对象,这就是我问的原因,无论如何都要重播。
  • @MiguelRodrigues 将 = 更改为 : 用于内部 seller1seller2

标签: javascript arrays object nested-object


【解决方案1】:

我建议将卖家存储在一个数组中,然后使用push

var lista = [{
        "product": "Dipers",
        "quantity": 2

        sellers:[{
        "name": "B&J",
        "adress": "that street"
        },
        {
        "name": "B&J",
        "adress": "that street"
        }]

    },
    {
        "product": "Beear",
        "quantity": 6
    },
    {
        "product": "Bread",
        "quantity": 10
    }
];

然后,在您的代码中,动态添加卖家:

lista[desiredindex].sellers.push({name:"new",address:"new"});

【讨论】:

  • lista[0].sellers.push(/* ... */)
  • list[desiredindex].sellers.push(values)
  • 因此,如果我每次尝试推送卖家时,卖家的数组都会增加,或者它将是固定大小,这两个卖家只是一个例子,我在每个领域都需要它。 @kemicofa
  • @MiguelRodrigues js 对象中的数组不是固定长度的。您可以根据需要添加任意数量。您可以对所需的每个属性执行此操作,只需将其从 "string" 值更改为 array
【解决方案2】:

只需将您写入/检索的新对象属性分配给一个新变量,然后简单地使用 dot notation 来检索新属性并将其分配给您的对象。

检查并运行以下 代码片段,以获得我上面描述的实际示例:

var lista = [{
        "product": "Dipers",
        "quantity": 2
    },
    {
        "product": "Beear",
        "quantity": 6
    },
    {
        "product": "Bread",
        "quantity": 10
    }
];

let newObj = {
  "seller1": {
    "name": "B&J",
    "adress": "that street"
  },
  "seller2": {
    "name": "B&J",
    "adress": "that street"
  }
}

lista[0].seller1 = newObj.seller1;
lista[0].seller2 = newObj.seller2;

console.log(lista);

注意对象属性使用冒号:,而不是等号=

【讨论】:

    【解决方案3】:

    正如 SomoKRoceS 上面回答的那样,您可以这样编写脚本:

    var lista = [{
            "product": "Dipers",
            "quantity": 2,
            "sellers": []
        },
        {
            "product": "Beear",
            "quantity": 6,
            "sellers": []
        },
        {
            "product": "Bread",
            "quantity": 10,
            "sellers": []
        }
    ];
    
    var seller1 = {
        "name": "B&J",
      "adress": "that street"
    }
    
    var seller2 = {
        "name": "Test",
      "adress": "that street"
    }
    
    lista[0].sellers.push(seller1);
    lista[1].sellers.push(seller2);
    lista[2].sellers.push(seller1);
    lista[2].sellers.push(seller2);
    
    console.log(lista);
    

    https://jsfiddle.net/9ar58teo/

    【讨论】:

      【解决方案4】:

      这样做..

      var lista = [{
              "product": "Dipers",
              "quantity": 2
          },
          {
              "product": "Beear",
              "quantity": 6
          },
          {
              "product": "Bread",
              "quantity": 10
          }
      ];
      ///  try this
      
      
      lista[0]['seller1']={
              "name": "B&J",
              "adress": "that street"
              };
      lista[0]['seller2']={
              "name": "B&J",
              "adress": "that street"
              };
      

      【讨论】:

        【解决方案5】:

        您的代码中有语法错误,但据我了解,您需要这个

         const seller1Name = “seller1”;
         const seller2Name = “seller2”;
         const lista = [{
            "product": "Dipers",
            "quantity": 2
           },
           {
            "product": "Beear",
            "quantity": 6
           },
           {
            "product": "Bread",
            "quantity": 10
           }
         ];
         lista[0][seller1Name] = {
           "name": "B&J",
           "adress": "that street"
         }
        
         lista[0][seller2Name] = {
             "name": "B&J",
             "adress": "that street"
         }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多