使用普通JavaScript合并对象
我一直在使用事件处理程序将输入与状态同步,并提出了以下解决方案:使用普通JavaScript合并对象,javascript,reactjs,Javascript,Reactjs,我一直在使用事件处理程序将输入与状态同步,并提出了以下解决方案: 处理程序使用字符串将值推送到端点,并将结果与当前状态合并,但我必须使用lodash来完成它,是否仍要使用vanilla来完成它?Areduce将生成一个通用解决方案: const path='foo bar num'; 常量路径=路径分割('-'); 常量对象={}; 常量值='Woo-hoo!'; path.reduce(([object,value],path,idx)=>{ object[path]=idx==paths
处理程序使用字符串将值推送到端点,并将结果与当前状态合并,但我必须使用lodash来完成它,是否仍要使用vanilla来完成它?A
reduce
将生成一个通用解决方案:
const path='foo bar num';
常量路径=路径分割('-');
常量对象={};
常量值='Woo-hoo!';
path.reduce(([object,value],path,idx)=>{
object[path]=idx==paths.length-1?值:{};
返回[对象[路径],值];
},[对象,价值];
console.log(object)
或者,您可以尝试使用lodashset
函数来设置深度嵌套对象的值
import set from 'lodash/set'
let path = 'foo-num';
const paths = path.split('-').join('.')
const value = 'some value';
set(object, paths, value)
您可以存储最后一个密钥,并仅减少之前的密钥。Ath结束存储以前的值并分配新值
函数设置值(对象、键、值){
var last=keys.pop(),
temp=keys.reduce((o,k)=>o[k]=o[k]|{},对象);
temp.original=!(最后一个在temp中)?null:temp[last];
温度[上次]=数值;
}
常数
对象={},
路径='foo bar num',
值='Woo-hoo!';
setValue(对象,路径分割('-'),值);
console.log(对象)代码>这似乎对我不起作用,因为它覆盖了原始对象中的值。当我设置状态时,它会删除原始值。//返回{“num”:value}//应为{“num”:value,“original”:null}我不明白-您的原始对象是{}