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 } }