我一直在研究事件处理程序,以将输入与状态同步,并提出以下解决方案:
https://gist.github.com/jadeallencook/678869f988bd65378d819496c4343e78
处理程序使用字符串将值推送到终点,并将结果与当前状态合并,但我必须使用lodash来完成它,无论如何在香草中完成它?
答案 0 :(得分:1)
reduce
将产生通用解决方案:
const path = 'foo-bar-num';
const paths = path.split('-');
const object = {};
const value = 'Woo hoo!';
paths.reduce(([object, value], path, idx) => {
object[path] = idx === paths.length - 1 ? value : {};
return [object[path], value];
}, [object, value]);
console.log(object)
答案 1 :(得分:0)
或者,您可以尝试使用lodash User.associate = models => {
User.hasMany(models.Text)
}
函数为深层嵌套的对象设置值。
set
答案 2 :(得分:0)
您可以存储最后一个键,并只存储之前的键。最后,存储先前的值并分配新的值。
function setValue(object, keys, value) {
var last = keys.pop(),
temp = keys.reduce((o, k) => o[k] = o[k] || {}, object);
temp.original = !(last in temp) ? null : temp[last];
temp[last] = value;
}
const
object = {},
path = 'foo-bar-num',
value = 'Woo hoo!';
setValue(object, path.split('-'), value);
console.log(object);