
在J*aScript开发中,我们经常会遇到需要处理复杂数据结构的情况,特别是多层嵌套的对象。当需要更新这些对象中某个深层属性的值时,简单的赋值操作或浅层合并往往无法满足需求,因为它们无法递归地处理所有层级,可能导致数据丢失或结构破坏。手动编写递归逻辑虽然可行,但既繁琐又容易出错。幸运的是,像Lodash这样的实用工具库提供了强大的功能来简化这类操作。
以下是一个示例,展示如何使用 _.merge 直接修改 data 对象:
const data = {
"room_1": {
"fan": "on",
"fan_state": 0,
"light1": "on",
"light2": "on",
"light3": "off",
"light4": "on"
},
"room_2": {
"fan": "on",
"fan_state": 2,
"light1": "off",
"light2": "on",
"light3": "on",
"light4": "off"
},
"room_3": {
"fan": "on",
"fan_state": 2,
"light1": "off",
"light2": "on",
"light3": "on",
"light4": "off"
},
"room_4": {
"fan": "on",
"fan_state": 3,
"light1": "off",
"light2": "off",
"light3": "off",
"light4": "on"
}
};
const update = {
"room_1": {
"light1": "off"
}
};
const main = () => {
console.log("更新前 room_1.light1:", data.room_1.light1); // >>> on
_.merge(data, update); // 使用 _.merge 直接修改 data 对象
console.log("更新后 room_1.light1:", data.room_1.light1); // >>> off
console.log("更新后的完整数据:", data); // data.room_1.light1 已变为 "off",其他属性保持不变
};
main();注意事项: 直接修改原始对象(可变更新)在某些场景下(如React、Vue等前端框架的状态管理)可能会导致意外的行为或难以追踪的副作用。通常推荐使用不可变更新。
AI at Meta
Facebook 旗下的AI研究平台
72
查看详情
要实现不可变更新,我们可以将一个空对象作为 _.merge 的第一个参数,然后依次传入原始对象和更新对象。这样,所有的合并操作都会作用于这个新创建的空对象,原始对象则保持不变。
const data = {
"room_1": {
"fan": "on",
"fan_state": 0,
"light1": "on",
"light2": "on",
"light3": "off",
"light4": "on"
},
"room_2": {
"fan": "on",
"fan_state": 2,
"light1": "off",
"light2": "on",
"light3": "on",
"light4": "off"
},
"room_3": {
"fan": "on",
"fan_state": 2,
"light1": "off",
"light2": "on",
"light3": "on",
"light4": "off"
},
"room_4": {
"fan": "on",
"fan_state": 3,
"light1": "off",
"light2": "off",
"light3": "off",
"light4": "on"
}
};
const update = {
"room_1": {
"light1": "off"
}
};
const main = () => {
console.log("原始数据 room_1.light1:", data.room_1.light1); // >>> on
// 将空对象作为目标,合并原始数据和更新数据,生成一个新对象
const copy = _.merge({}, data, update);
console.log("原始数据 room_1.light1 (未改变):", data.room_1.light1); // >>> on (原始数据保持不变)
console.log("合并后的新对象 copy.room_1.light1:", copy.room_1.light1); // >>> off (新对象已修改)
console.log("合并后的完整新对象:", copy);
};
main();在这个例子中,data 对象在合并后依然保持不变,而 copy 变量则包含了更新后的数据。这是在现代J*aScript应用中更推荐的做法。
以上就是J*aScript深度嵌套对象值的更新策略:使用Lodash进行高效合并的详细内容,更多请关注其它相关文章!
# react
# 运算符
# 推荐使用
# 原始数据
# 是一个
# 象中
# 数据结构
# 递归
# 数据丢
# 响应式编程
# ai
# 工具
# npm
# 前端
# js
# html
# java
# javascript
# vue
# cdn
# 简单seo优化推广
# 阿里妈妈网站推广描述
# 乡网站建设
# 吃鸡seo是哪个服
# 韶关网站建设优化
# 成都网站优化工具软件
# 外贸有哪些推广网站好
# 网站建设胡菘
# 北京关键词开户排名
# 临沂网站建设订制
# 服务端
# 中非
# 它会
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
优化推广96088 】
【
技术知识133117 】
【
IDC资讯59369 】
【
网络运营7196 】
【
IT资讯61894 】
相关推荐:
百度地图离线地图无法加载如何解决 百度地图离线地图加载优化方法
iCloud官方网站 iCloud网页版在线登录入口
Google Cloud Functions 时区处理指南:理解与最佳实践
折叠屏手机充不进电是什么问题? 特殊结构带来的维修难点
《新三国志曹操传》游历事件袁尚突围攻略
使用jQuery精确检测除指定元素外任意位置的点击事件
如何修改Windows截图的默认保存位置_告别C盘让桌面更整洁【教程】
《tt语音》超级玩家开通方法
realme 10 Pro息屏方案_realme 10 Pro省电策略
路由器DNS怎么设置最快 优化DNS提升上网速度教程
青橙手机语音助手怎么唤醒_青橙手机语音助手设置与唤醒方法
ao3入口镜像地址 ao3镜像入口可靠跳转
《360浏览器》设置摄像头权限方法
Keras中Convolution2D层及其核心辅助层详解
《植物大战僵尸3》火龙草作用介绍
SQL聚合查询、联接与筛选:GROUP BY 子句的正确使用与常见陷阱
如何在CSS中清除浮动解决背景颜色不包裹内容问题_clear after技巧
苹果手机怎么合并照片_苹果手机合并多张照片的操作方法
创建您的便携版VS Code:让配置随身携带
除了Copilot,还有哪些值得一试的VS Code AI插件?
如何在vscode中关闭it环境
rabbitmq 持久化有什么缺点?
《梦想世界:长风问剑录》药师一图流分享
店铺如何关联视频号推广?视频号推广有什么用?
铁路12306座位怎么选_12306官方选座操作方法
TikTok搜索结果不显示怎么办 TikTok搜索刷新与优化方法
房产|直播|视频号怎么认证开通?|直播|需要什么资质?
如何定制PrimeNG Sidebar的背景颜色
C++中std::thread和std::async的区别_C++并发编程与线程与异步任务比较
AO3永久镜像入口开放_AO3最新网址兼容所有浏览器
OpenWeatherMap API:通过城市名称获取天气预报数据指南
如何取消数字签名
飞飞漫画漫画阅读官网_飞飞漫画漫画阅读官网进入阅读
偃武诸葛亮阵容搭配推荐
发布小红书怎么屏蔽粉丝?屏蔽粉丝能看到吗?
PyEZ 配置提交中 RpcTimeoutError 的健壮性处理策略
excel怎么计算平均值 excel平均函数*ERAGE使用教学
微博网页版入口链接 微博网页版在线互动平台
抖音评论无法发送如何修复 抖音评论功能操作指南
批改网网页版登录 批改网电脑版学生登录入口
Composer reinstall命令重装损坏的包
J*a列表元素格式化输出教程
在React中正确处理HTML input type="number"的数值类型
我的世界官方网址入口 我的世界游戏主页直达入口
vivo云服务一直提示空间不足怎么办 怎么办vivo云服务老是提示空间不足
word怎么将图片设置为页面背景并不影响打印_Word图片背景设置方法
汽水音乐车机版 汽水音乐车机版官方入口
mysql如何回滚事务_mysql ROLLBACK事务回滚方法
利用Flexbox实现图片元素的二维布局:2x2网格排列指南
《宝可梦大集结》S4冠军之路开始时间介绍
2025-11-18
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。