给定此示例使用 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/