【js】如何在不指定具体属性名,而是通过变量获取属性名,设置一个对象中多层级下的某个属性的值

为了优化这种赋值方式,可以考虑使用ES6的解构和展开运算符。

首先,我们可以使用解构运算符来提取需要赋值的变量,以增加代码的可读性和简洁性:

const { ContainerKey, formId } = obj;
obj[ContainerKey][formId[0]][formId[1]] = params;

接下来,我们可以使用展开运算符来简化代码,并且允许我们将多个赋值操作合并为一个语句:

const { ContainerKey, formId } = obj;
obj[ContainerKey] = {
  ...obj[ContainerKey],
  [formId[0]]: {
    ...obj[ContainerKey][formId[0]],
    [formId[1]]: params
  }
};

这种方式可以避免不必要的代码重复,并且使代码更易于扩展和维护。

PS:上面有个前提,就是所有属性的值必须是对象类型,如果中间参杂了其他类型就不可以用这种方式,可以这样:

如果需要将多个变量设置为深层对象的某个属性,可以使用类似以下的方式:

const obj = {};  // 假设我们要设置 obj.a.b.c = value
const [a, b, c] = ['a', 'b', 'c'];
const value = 123;

obj[a] = obj[a] || {};
obj[a][b] = obj[a][b] || {};
obj[a][b][c] = value;

上述代码中,我们先定义了一个空的对象obj和要设置的属性变量abc以及属性值value。然后,我们首先判断obj对象是否已经存在a属性,如果不存在则将a属性初始化为空对象;接着,我们在obj[a]下判断是否存在b属性,如果不存在则将b属性初始化为空对象;最终,我们在obj[a][b]下设置c属性的值为value

如果属性变量和属性值都是动态生成的,上述方式可以灵活设置深层对象的任意属性值。如果需要设置多个对象的属性,可以将上述代码作为一个函数,传入需要操作的对象和属性等参数,以减少代码重复。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hzxOnlineOk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值