Javascript 如何将字符串数组复制到对象中

Javascript 如何将字符串数组复制到对象中,javascript,Javascript,我有一个字符串数组和一个对象: const arr = ['abc', 'def']; const obj = { foo: true, bar: 42, }; 我需要将arr中的值添加为obj中的键,以便生成的对象看起来像: const result = { foo: true, bar: 42, abc: true, def: true, }; 这就是我所尝试的: { ...obj, ...arr.map(x => ({[x]: true })) } 您

我有一个字符串数组和一个对象:

const arr = ['abc', 'def'];

const obj = {
  foo: true,
  bar: 42,
};
我需要将
arr
中的值添加为
obj
中的键,以便生成的对象看起来像:

const result = {
  foo: true,
  bar: 42,
  abc: true,
  def: true,
};
这就是我所尝试的:

{ ...obj, ...arr.map(x => ({[x]: true })) }

您只需使用
Object.assign()

下面给出的示例将改变原始对象:

让arr=['abc','def'];
设obj={
傅:是的,
酒吧:42,
};
//注意,它将改变原始对象
arr.forEach((e)=>Object.assign(obj,{[e]:true}));

控制台日志(obj)您可以复制对象并映射所需的属性

var数组=['abc','def'],
对象={foo:true,bar:42},
结果=Object.assign({},Object,…array.map(k=>({[k]:true}));
控制台日志(结果)那么:

Object.assign({}, obj, ...arr.map(x => ({[x]: true})))

演示:

const arr=['abc','def'];
const obj={foo:true,bar:42};
const result=Object.assign(obj,…arr.map(x=>({[x]:true}));

控制台日志(结果)另一种方法是使用

这将变异
obj
result
将指向
obj
。这意味着改变其中一个会改变两个

const result = arr.reduce((acc, item) => {
    acc[item] = true;
    return acc;
}, obj);
如果您不希望变异
obj
,则使用

const result = arr.reduce((acc, item) => {
    acc[item] = true;
    return acc;
}, obj);
const result = arr.reduce((acc, item) => {
    acc[item] = true;
    return acc;
}, { ...obj });