Javascript 将数组映射到由数组值设置键的对象
我需要能够根据数组值从对象中删除对象 我有一个基本对象:Javascript 将数组映射到由数组值设置键的对象,javascript,arrays,object,mapreduce,Javascript,Arrays,Object,Mapreduce,我需要能够根据数组值从对象中删除对象 我有一个基本对象: const obj = { one: { selected: undefined, }, two: { selected: undefined, }, three: { selected: undefined, } }; 示例阵列为: const arr = ['one', 'two']; 我尝试这样
const obj = {
one: {
selected: undefined,
},
two: {
selected: undefined,
},
three: {
selected: undefined,
}
};
示例阵列为:
const arr = ['one', 'two'];
我尝试这样做:
const mappedObj = arr.map(val => {
if (obj[val]) {
return ({
[val]: {
selected: true
},
});
}
return false;
})
我需要它是:
object: {
one: {
selected: true,
},
two: {
selected: true,
}
}
您可以在arr阵列上尝试使用reduce:
您可以使用简单的forEach循环:
常量对象={
一:{
已选择:未定义,
},
二:{
已选择:未定义,
},
三:{
已选择:未定义,
}
};
常数arr=['1','2'];
Object.keysobj.forEachkey=>obj[key].selected=arr.includeskey;
console.logobj 您可以映射单个对象,并使用和为阵列将它们指定给单个对象 var object={1:{selected:undefined,foo:42},2:{selected:undefined},3:{selected:undefined}, 数组=['1','2'], 结果=Object.assign …array.mapk=>{[k]:Object.assign{},Object[k],{selected:true} ;
console.logresult 您可以使用reduce而不是map:
const obj = {
one: {
selected: undefined,
},
two: {
selected: undefined,
},
three: {
selected: undefined,
}
};
const arr = ['one', 'two'];
const mappedObj = arr.reduce((acm, val) => {
if (val in obj) {
acm[val] = { selected: true };
}
return acm;
},
{}
);
结果:
{ one: { selected: true }, two: { selected: true } }
常量对象={
一:{
已选择:未定义,
},
二:{
已选择:未定义,
},
三:{
已选择:未定义,
}
};
常数arr=['1','2'];
Object.keysobj.mapitem=>{
ifarr.includesitem{
obj[项目]。已选择=真
}否则{
删除obj[项目]
}
}
console.logobj使用一行reduce
常量对象={
一:{
已选择:未定义,
},
二:{
已选择:未定义,
},
三:{
已选择:未定义,
}
};
常数arr=['1','2'];
常数res=
arr.reducea,c=>obj[c]&&a[c]=Object.assign{},obj[c],{selected:true},a,{};
console.logreselected未设置为true我还建议以防万一:{…obj[k],selected:true}根据您的预期结果,如何确定one.selected为true,two.selected为false?@charlietfl抱歉,应该是true
{ one: { selected: true }, two: { selected: true } }