【问题标题】:Creating dynamic object in JavaScript [duplicate]在 JavaScript 中创建动态对象 [重复]
【发布时间】:2021-07-30 22:49:06
【问题描述】:

我正在准备 JSON 数据以发送 POST 请求。我有一个像['2051','2052] 这样的数组。我想将这两个 ID 传递到 JSON 对象中。这是我需要的 JSON 数据:

 var arr =['2051','2052']
 var bData = {
      "product_id": 2,
      "cart_item_data": 
      {
        "wc_bookings_field_duration": 5,
        "wc_bookings_field_start_date_year": 2021,
        "wc_bookings_field_start_date_month": 05,
        "wc_bookings_field_start_date_day": 28,
        "wc_bookings_field_start_date_time": 09:00,
        "wc_bookings_field_start_date_local_timezone": "",
        "add-to-cart": 2,
        "start_time": 09:00,
        "end_time": 5,
        `wc_bookings_field_persons_2051`: 5,
        `wc_bookings_field_persons_2052`: 0,
      },
    }

这是我尝试过的:

 var arr =['2051','2052']
 var personStr = arr[0].toString()
 var childStr = arr[1].toString()
 var bData = {
      "product_id": 2,
      "cart_item_data": 
      {
        "wc_bookings_field_duration": 5,
        "wc_bookings_field_start_date_year": 2021,
        "wc_bookings_field_start_date_month": 05,
        "wc_bookings_field_start_date_day": 28,
        "wc_bookings_field_start_date_time": 09:00,
        "wc_bookings_field_start_date_local_timezone": "",
        "add-to-cart": 2,
        "start_time": 09:00,
        "end_time": 5,
        `wc_bookings_field_persons_${personStr}`: 5,
        `wc_bookings_field_persons_${childStr}`: 0,
      },
    }

但由于某种原因,这会抛出意外的令牌。我在这里做错了什么?此外,数组中的项目数可能更多。然后更多的项目将添加到对象中。

【问题讨论】:

  • 您可以使用计算属性名称:[`wc_bookings_field_persons_${personStr}`]: 5
  • 你不能在对象字面量中使用模板字面量作为属性名称,这会抛出Uncaught SyntaxError: expected property name, got template literal
  • 当我尝试你的方式时,它只显示第一个 field_persons。不知道为什么@NickParsons

标签: javascript


【解决方案1】:

您可以使用bData.cart_item_data["wc_bookings_field_persons_" + personStr] = 5 进行动态阅读。

object.hello 与 JavaScript 中的 object['hello'] 相同

【讨论】:

  • 您不能在模板文字之外使用${expression} 语法。
  • 糟糕,对不起。你应该只写 personStr
  • 那么 childStr @AtheeshThirumalairajan 呢
  • 做同样的事情,即 bData.cart_item_data["wc_bookings_field_persons_" + childStr] = 0
  • bData.cart_item_data["wc_bookings_field_persons_" + personStr] = 5 仅显示第一项。如何真正让他们两个@AtheeshThirumalairajan
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-28
  • 2012-02-23
  • 2015-04-23
  • 1970-01-01
  • 2015-07-12
  • 1970-01-01
  • 2023-03-14
相关资源
最近更新 更多