Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用普通JavaScript合并对象_Javascript_Reactjs - Fatal编程技术网

使用普通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)
或者,您可以尝试使用lodash
set
函数来设置深度嵌套对象的值

    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}我不明白-您的原始对象是
{}