【发布时间】:2019-04-04 12:39:24
【问题描述】:
我正在使用 lodash 来操作 JSON 对象。我并不反对使用 Vanilla JS,但由于我目前正在开发 PoC,我只是在寻找最快的测试解决方案。
所以这是我面临的问题:我希望能够轻松地将push 一个元素添加到对象中任何位置的数组中,并且它应该自动创建所有缺失的节点,包括最后一个数组。
例如,假设我有一个空对象,我想创建一个函数,可以用正确的值填充我的对象,例如:
let dl = {};
customPush(dl, 'a.b', { c: 3, d: 4 });
// or
customPush(dl, ['a', 'b'], { c: 3, d: 4 });
应该创建:
dl = {
a: {
b: [{
c: 3,
d: 4
}]
}
}
这是我尝试过的所有方法,但它们都不起作用:
function customPush(obj, path, item) {
// This is just assigning the item to the path, not pushing to a new array
_.set(dl, path, item);
// This one is not doing anything visible
_.get(dl, path, []).push(item);
// Pushing in this one doesn't work with a path like 'a.b'
if (_.has(dl, path)) {
dl.path.push(item);
} else {
_.set(dl, path, [item]);
}
// Any idea?
...
}
非常感谢您的帮助。
【问题讨论】:
标签: javascript lodash