我有一个对象totalData,我正在对其进行分解,以添加一个新的对象值.我知道我可以使用模板字符串(如下所示)定义新的对象属性,但如何使用模板字符串来获取对象值?下面的代码只是运行了一个错误,例如在[${currentMonth}]后面写着"预期标识符".还有别的方法吗?

const newTotalData = {
      ...totalData,
      [`${currentYear}`]: {
        [`${currentMonth}`]: {
          [`${currentWeek}`]: {
            [`${currentDay}`]: {
              completedTasks: totalData[`${currentYear}`].[`${currentMonth}`].[`${currentWeek}`].[`${currentDay}`].completedTasks + 1
            }
          },
        },
      },
    };

推荐答案

问题不在于模板字符串,而是您使用的.[…]语法.使用either dot or bracket notation,不要同时使用两个:

completedTasks: totalData[`${currentYear}`][`${currentMonth}`][`${currentWeek}`][`${currentDay}`].completedTasks + 1

但是,请注意,在代码中使用模板文字是没有意义的.属性键已经隐式强制为字符串,无需将变量放入不添加任何内容的模板文字中.只要写

const newTotalData = {
  ...totalData,
  [currentYear]: {
    [currentMonth]: {
      [currentWeek]: {
        [currentDay]: {
          completedTasks: totalData[currentYear][currentMonth][currentWeek][currentDay].completedTasks + 1
        },
      },
    },
  },
};

Javascript相关问答推荐

react 路由加载程序行为

通过使用100%间隔时间来代表我们还剩多少时间来倒计时

GrapeJS -如何保存和加载自定义页面

如何解决chrome—extension代码中的错误,它会实时覆盖google—meet的面部图像?'

D3 Scale在v6中工作,但在v7中不工作

构造HTML表单以使用表单数据创建对象数组

显示图—如何在图例项上添加删除线效果?

简单的PayPal按钮集成导致404错误

从包含数百行的表中获取更改后的值(以表单形式发送到后端)的正确方法是什么?

Eval vs函数()返回语义

基于props 类型的不同props ,根据来自接口的值扩展类型

DOM不自动更新,尽管运行倒计时TS,JS

以编程方式聚焦的链接将被聚焦,但样式不适用

Next.js中的服务器端组件列表筛选

如何在尚未创建的鼠标悬停事件上访问和着色div?

谷歌饼图3D切片

为什么当雪碧的S在另一个函数中时,Phaser不能加载它?

AstroJS混合模式服务器终结点返回404

如何动态呈现适合未知屏幕大小的最大数量的表行?苗条的

如何为Reaction应用程序创建仅登录的路由?