javascript - 如何在不创建未定义值的情况下使用 lodash 进行深度设置

标签 javascript lodash

给定此示例使用 lodash :

var object = {};
_.set(object, [ 1, 2 ], 5);
console.log(object);

控制台中的结果对象是:

{
  1: [undefined, undefined, 5]
}

现在想象一下,您设置的时间戳不是整数 2,而是 1445231475。您现在在一个非常大的数组中有 1445231474 个未定义的值,该数组将在几次 _.set 后耗尽内存操作。

如果可以使用 _.set,将如何创建这个对象:

{
  1: {
    2: 5
  }
}

如果 2 确实是一个像“a”这样的字符串是可能的,但 Lodash 甚至会强制将“2”放入多个未定义值的数组中。

如有必要,我可以使用 _.merge,但我更愿意使用 _.set 功能。

最佳答案

你可以使用 lodash setWith

// unwanted behavior with set
let x = {}
_.set(x, [1,2], 'test')
// x = { '1': [ <2 empty items>, 'test' ] }

// desired behavior with setWith
let y = {}
_.setWith(y, [1,2], 'test', Object)
// y = { '1': { '2': 'test' } }

关于javascript - 如何在不创建未定义值的情况下使用 lodash 进行深度设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33207909/

相关文章:

javascript - 谷歌浏览器和(缓存或内存泄漏)

javascript - 如何检测浏览器是否支持鼠标悬停事件?

javascript - 根据属性合并两个数组

node.js - express-validator - 自定义错误输出

javascript - 循环内 Lodash Throttle 或 Debounce 的问题

javascript - 合并数组中项目和 redux 中对象的值

javascript - 设置表单验证功能时遇到问题

javascript - 需要 JavaScript 和从数组创建 html 表的帮助

javascript - 如何使用正则表达式获取此处的日期?

javascript - 如何在没有运算符的情况下将 lodash _ 与数组而不是多个参数一起使用