Javascript 展开对象并有条件地修改一个属性ES6

Javascript 展开对象并有条件地修改一个属性ES6,javascript,ecmascript-6,Javascript,Ecmascript 6,我的目标如下 const myObject = { "Obj1" :[ { name:"test", down:"No" Up: "Yes", }, { }, {}.... ], "Obj2" :[ {}, {}......

我的目标如下

const myObject = {
      "Obj1" :[ {
         name:"test",
         down:"No"
         Up: "Yes",
        },
        { }, {}....
           
       ],
     "Obj2" :[ {}, {}......

           
       ],
     "Obj3" : [ {}, {}, {....
           
       ],
}
我想克隆上面的对象,如果name=“test”,我想修改“Obj1”,然后将其设置为“Yes”


基本上我想有条件地扩展对象属性。

这个问题有点不清楚。无论如何 如果要从克隆对象有条件地更新“up”(如果“name”=“test”):

从lodash/fp导入{cloneDeep};
//您还可以使用JSON stringify+JSON解析
//“展开”操作符将仅浅复制对象
//克隆它
const deepClonedObject=cloneDeep(myObject);
//根据您的需要更新项目
deepClonedObject.obj1=deepClonedObject.obj1.map(item=>(item.name==='test'
?{…项,向上:'是'}
:项目)
)

您可以将
reduce
map
结合使用
reduce
,因为它用途广泛,可以返回对象而不是数组和
map
来更新属性

const myObject={
Obj1:[
{
名称:“测试”,
放下:“不”,
“不”,
},
],
Obj2:[
{
名称:“测试”,
放下:“不”,
“不”,
},
],
Obj3:[
{
名称:“test2”,
放下:“不”,
“不”,
},
],
};
const updateObject=Object.keys(myObject).reduce((obj,key)=>{
返回{
…obj,
[键]:myObject[键].map((新对象)=>{
if(newObject.name==='test'){
newObject.Up='Yes';
}
返回newObject;
})
};
}, {});

console.log(updateObject)那么问题出在哪里呢?我知道我们可以使用
让updatedObj={…myObj,在这里修改属性}
但是我不知道在这里怎么做。。查找并更新属性