【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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/187132.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu Server 20.04.6下Anaconda3安装Pytorch

环境 Ubuntu 20.04.6 LTS Anaconda3-2023.09-0-Linux-x86_64.sh conda 23.7.4 Pytorch 1.11.0 安装 先创建一个工作环境,环境名叫lia: conda create -n lia python3.8环境的使用方法如下: conda activate lia # 激活环境 conda deactiv…

【Java 基础 - 泛型机制详细解释】

Java 基础 - 泛型机制详解 为什么会引入泛型泛型的基本使用 泛型类泛型接口泛型方法泛型的上下限泛型数组深入理解泛型 如何理解Java中的泛型是伪泛型?泛型中类型擦除如何证明类型的擦除呢?如何理解类型擦除后保留的原始类型?如何理解泛型的编译期检查&…

查看Hive表信息及占用空间的方法

一、Hive下查看数据表信息的方法 方法1:查看表的字段信息 desc table_name; 方法2:查看表的字段信息及元数据存储路径 desc extended table_name; 方法3:查看表的字段信息及元数据存储路径 desc formatted table_name; 方法4:…

NetApp AFF A800:为人工智能、深度学习和大数据分析提供动力

NetApp AFF A800:为发挥混合云的最大优势提供动力 您对数据的掌控能力将决定您能否在数字化时代取得成功。借助作为全球速度最快的企业级 NVMe 闪存存储之一的 NetApp AFF A800,您可以突破性能的限制。通过行业领先的云集成,您可以管理从边缘…

Linux:docker的数据管理(6)

数据管理操作*方便查看容器内产生的数据 *多容器间实现数据共享 两种管理方式数据卷 数据卷容器 1.数据卷 数据卷是一个供容器使用的特殊目录,位于容器中,可将宿主机的目录挂载到数据卷上,对数据卷的修改操作立刻可见,并且更新数…

Springboot快速整合kafka

kafka的基本了解 kafka也是 目前常用的消息中间件,支持同步与异步通信,和rabbitmq一样,工作模式大概相同,并且被spingboot整合的后的都是 中间件Template的实列化客户端类 ,消费者监听注解为KafkaListener,和RabbitListener和很相似,这些消息中间件使用过后,发现大致都是相同的…

基于AT89C51单片机的节日彩灯门设计

1.设计任务 本设计采用单片机为主控芯片,结合外围电路组成彩灯门的控制系统器,用来控制16个彩色的LED发光,实现彩色亮点的循环移动;通过软件编程实现各种各样的彩色亮点平面循环移动,该彩色控制器可以通过输…

fastapi 后端项目目录结构 mysql fastapi 数据库操作

原文:fastapi 后端项目目录结构 mysql fastapi 数据库操作_mob6454cc786d85的技术博客_51CTO博客 一、安装sqlalchemy、pymysql模块 pip install sqlalchemy -i https://pypi.tuna.tsinghua.edu.cn/simple pip install pymysql -i https://pypi.tuna.tsinghua.edu.…

IDE1007:当前上下文中不存在名称“xxx“

这种在Halcon中直接导出的代码不能直接放程序中,应该在控件中比如一个按钮中,就不会出错了。

【驱动】SPI驱动分析(五)-模拟SPI驱动

简介 模拟SPI驱动是一种软件实现的SPI总线驱动。在没有硬件SPI控制器的系统中,通过软件模拟实现SPI总线的功能。它允许在不修改硬件的情况下,通过GPIO(通用输入/输出)引脚模拟SPI总线的通信,从而与SPI设备进行数据交换…

单片机学习12——电容

电容的作用: 1)降压作用: 容抗: Xc 1/2fc 串联分压原理。2100Ω的容量,50Hz的频率,可以得到1.5uF。断电之后,需要串联一个1MΩ的电阻放电。 那是不是可以使用2100欧姆的电阻来代替电容呢&am…

Redis基础系列-安装Redis

Redis基础系列-安装Redis 文章目录 Redis基础系列-安装Redis1. 环境要求2. 下载redis3. 安装4. 配置5 参考与感谢 1. 环境要求 (安装C语言编译环境)redis是用C语言开发的,所以需要安装C语言编译环境,中途可能会出现询问你是否需要可以安装&a…

useDispatch和store.dispatch

在 React 中,useDispatch 是 React Redux 提供的一个 hook,而 store.dispatch 是 Redux 中的一个方法。它们的作用是触发 Redux 中的 action,从而更新状态。下面是它们之间的主要区别: 使用场景: useDispatch: 这是 Re…

DS八大排序之直接选择排序和堆排序

前言 上一期我们已经介绍了,排序、为什么要有排序以及排序在实际生活中的应用。并且介绍并实现了直接插入排序和它的优化即希尔排序~!本期我们再来学习一组排序 ---- "选择排序"即直接选择排序和堆排序~! 本期内容介绍 直接选择排…

【机器视觉技术栈】- 机器视觉基础

1.1 为什么采用机器视觉 人眼与机器视觉对比 人眼机器视觉精确性差,64灰度级,不能分辨小于100微米的目标强,256灰度级,可检测微米级目标速度慢,无法看清间隔小于40毫秒的运动目标快,快门时间可达10微秒适…

操作系统背景知识

一、程序分类 程序按其运行环境分为: 裸机程序:直接运行在对应硬件上的程序 应用程序:只能运行在对应操作系统上的程序 二、计算机系统的层次结构 计算机系统两种层次结构: 2.1 无操作系统的简单的两层结构 2.2 有操作系统的…

企业软件的分类有哪些|app小程序定制开发

企业软件的分类有哪些|app小程序定制开发 企业软件是指为了满足企业运营和管理需求而开发的软件系统。根据不同的功能和应用领域,企业软件可以分为以下几个分类: 1. 企业资源计划(Enterprise Resource Planning,ERP)软…

Vue2升级到Vue3到底是不是一个正确的选择?

Vue2升级到Vue3是否是一个正确的选择,这取决于您的项目需求和团队的技术栈。以下是一些关于Vue2升级到Vue3的优缺点,供您参考: 优点: 1. 性能提升:Vue3在性能方面进行了优化,包括渲染速度、内存占用等方面…

云计算生成式 -给你不一样的音乐推荐新体验

目录 摘要: 正文: 一、亚马逊云与生成式 AI 结合的展望/总结 二、我用亚马逊云科技生成式 AI 产品打造了什么,解决了什么问题 三、未来云端技术发展趋势的见解 四、云端技术未来需要解决的问题 1、如何保护数据安全和隐私? …

空间连通区域@曲面积分为零问题@通量和散度@高斯公式物理意义

文章目录 沿任意闭曲面的曲面积分为0的条件空间连通区域概念小结例 充要条件定理证明 通量和散度流量(通量)例 散度和高斯公式的物理意义借助速度场讨论一般向量场的散度小结例 高斯公式的向量场的通量和散度向量形式 沿任意闭曲面的曲面积分为0的条件 与讨论曲线积分中闭曲线…