首页 > 解决方案 > 将数组映射到由数组值键控的对象

问题描述

我需要能够根据数组值从对象中删除对象。

我有一个基础对象:

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

标签: javascriptarraysobjectmapreduce

解决方案


您可以映射单个对象并将它们分配给具有Object.assign数组语法的单个对象。...

var object = { one: { selected: undefined, foo: 42 }, two: { selected: undefined }, three: { selected: undefined } },
    array = ['one', 'two'],
    result = Object.assign(
        ...array.map(k => ({ [k]: Object.assign({}, object[k], { selected: true }) }))
    );
  
console.log(result);


推荐阅读