Javascript 如何使用object.assign()在嵌套对象中赋值?
我的主要对象如下所示:Javascript 如何使用object.assign()在嵌套对象中赋值?,javascript,object,Javascript,Object,我的主要对象如下所示: const obj = { data: { 'Puppies' : [], 'Kittens': [] } }; 我想给data.Puppies[0]中的数据字段赋值 当我尝试使用Object.assign()执行此操作时,我得到一个错误: Unexpected token, expected , (83:12) 81 | 82 | return Object.assign({}, obj,
const obj = {
data: {
'Puppies' : [],
'Kittens': []
}
};
我想给data.Puppies[0]中的数据字段赋值
当我尝试使用Object.assign()执行此操作时,我得到一个错误:
Unexpected token, expected , (83:12)
81 |
82 | return Object.assign({}, obj, {
> 83 | data.Puppies[0]: list
| ^
84 | });
85 | }
86 |
我不知道怎样才能完成我的任务。
我需要使用Object.assign(),因为我需要返回一个新对象,而不是原始对象。我这样做是因为ReactJS中的Redux还原剂。ES6没有突变的方式:
const obj={
数据:{
“小狗”:[],
‘小猫’:[]
}
};
const data=Object.assign({},obj.data{
小狗:[…obj.data.Puppies,'newValue']
});
const newObject=Object.assign({},obj,{data});
console.log(newObject)
您可以分配外部对象,并将索引0
处的新内容分配给数组,而无需修改原始的obj
const list=['foo','bar'];
const obj={data:{小狗:[],小猫:[]};
log(Object.assign({},obj,{data:{Puppies:Object.assign([],obj.data.Puppies,{0:list}}}));
控制台日志(obj)
用一个新数组替换幼犬,将列表
作为元素0,其余幼犬从元素1开始,这样可以有效地替换元素0
var obj = { data: { 'Puppies': [], 'Kittens': [] } };
var list = [ 'a', 'b' ];
var n = Object.assign({}, obj, {
data: Object.assign({}, obj.data, {
Puppies: [ list ].concat(obj.data.Puppies.slice(1))
})
});
console.log(obj);
console.log(n);
您可以尝试使用Ramdajs镜头来实现这一点
const obj = {
data: {
'Puppies' : [],
'Kittens': []
}
};
const list = [1,2,3,4];
const xlens = R.lensPath(['data', 'Puppies'])
console.log(R.set(xlens, list, obj))
代码排斥所以基本上我们需要从obj获得一个副本,在索引0处的
Puppies
中有一个新项目,而不改变原始对象,对吗?如果小狗和小猫可能会改变呢?一只可变的小猫怎么样?那么你也可以使用Kitten
的模式{data:{Kitten:Object.assign([],obj.data.Kitten,{0:data}}}}}
不,我的意思是你有硬编码的小狗和小猫。如果我们不知道它是哪一个呢?如果你不知道你需要什么数组来处理一些新数据,你无论如何也不能分配它。对于深度复制,您可以使用其他一些技术。没有错,只是编辑其他人的答案并注入这个糟糕的库