You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Underscore.js是否有Lodash _.set()等效方法?嵌套属性添加单行代码方案

解答

内置方法存在性说明

Underscore.js 没有内置与 Lodash _.set() 功能完全等效的原生方法,你需要自行实现对应能力。

单行嵌套属性设置方案

你可以用Array.prototype.reduce实现符合需求的单行工具函数,不存在的嵌套层级会自动初始化:

// 参数说明:obj为目标对象,path为属性路径(支持'a.b.c'字符串或['a','b','c']数组格式),value为要设置的值
const setNestedProp = (obj, path, value) => (typeof path === 'string' ? path.split('.') : path).reduce((curr, key, i, arr) => i === arr.length - 1 ? (curr[key] = value) : (curr[key] = curr[key] ?? {}), obj)
  • 调用示例:
    const myObj = {}
    setNestedProp(myObj, 'profile.contact.phone', '13xxxxxxxxx')
    // 执行后myObj结构为 {profile: {contact: {phone: '13xxxxxxxxx'}}}
    

如果需要兼容不支持空值合并运算符(??)的旧环境,把curr[key] = curr[key] ?? {}替换成curr[key] = curr[key] || {}即可。

内容的提问来源于stack exchange,提问作者Jirik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 02:57:03