使用javascript将字符串数组转换为字段名

使用javascript将字符串数组转换为字段名,javascript,ecmascript-6,Javascript,Ecmascript 6,我想知道javascript(最好是es6)中是否有一种很好的方法可以将映射函数的结果字符串数组转换为动态创建的对象中的字段名 例如,假设我从map函数中得到以下结果: ["checkbox1Value", "checkbox4Value"] 我想用这些结果来做这件事: const answer = { //some other fields dynamically created checkbox1Value: true, checkbox4Value: tru

我想知道javascript(最好是es6)中是否有一种很好的方法可以将映射函数的结果字符串数组转换为动态创建的对象中的字段名

例如,假设我从map函数中得到以下结果:

["checkbox1Value", "checkbox4Value"]
我想用这些结果来做这件事:

const answer = {
     //some other fields dynamically created
     checkbox1Value: true,
     checkbox4Value: true 
}

无论如何,通过es6这样做?

关于这一点,es6-y没有什么特别之处:

let key=[“checkbox1Value”、“checkbox4Value”];
设obj={};
对于(让钥匙中的钥匙){
obj[key]=true;
}
控制台日志(obj)
let result=[“checkbox1Value”、“checkbox4Value”];
const answer=result.reduce((acc,cur)=>{acc[cur]=true;返回acc},{});

控制台日志(应答)您可以将其映射到这样的对象

const obj = {}
["checkbox1Value", "checkbox4Value"].forEach(val => {
    obj[val] = true
}
可以使用和映射单个对象,并将其指定给单个对象

var数组=[“checkbox1Value”,“checkbox4Value”],
object=object.assign(…array.map(k=>({[k]:true}));

console.log(对象)
可能想用
forEach
而不是
map
是的,我一发布就意识到了这一点。最新更新,最干净,最容易阅读!虽然可能不使用
array
作为变量名:PI agree,最干净,最容易阅读。我个人会在制作中使用它,因为它意味着所有级别的成员都会理解它。Nina和Dereks很酷,但对于没有经验的开发人员,他们将很难使用该代码库。回答很好,但我感觉这对于大型阵列来说效率很低。请定义大型阵列。我认为大小实际上可以忽略不计。我的意思是一个有数千个元素的足够大的数组。由于要为每个元素创建一个新对象,1)这是不必要的,2)因为它们是动态传递给
对象的。将
指定为参数,这将导致任何足够大的数组出现堆栈溢出。(示例:)使用我的解决方案进行比较时,
.reduce
只花了227ms,而
对象。assign
超过1000ms可能会导致堆栈溢出。问题是关于将数组转换为以值为键的对象的一种不错的ES6方法。如果用户希望获得一种快速获取大量密钥的方法,那么在这种情况下,一个简单的
for
循环将是最好的,它可以在reduce回调周围移动一个对象,占用很小的空间。我想说,在方便/可读的ES6代码和效率之间存在着很好的平衡。如果包含了效率,那么这并不是一种“很好的ES6方式”。(并不是说这是一个无效的解决方案,我个人对你的答案投了赞成票。)map和reduce都是ECMA5。“我想你是在考虑箭的功能。”阿切尔,比如尼娜的答案。但是,是的
map
reduce
不是ES6。此外,OP特别要求ES6方法。但是,如果他们想在IE上运行它,我很高兴有这个选择:pI觉得ES6的吸引力通常会导致人们要求ES6解决方案,而实际上他们指的是一个功能编程的解决方案,从来没有想过使用reduce(对于javascript来说还是比较新的)。我和尼娜一样喜欢这个答案!很高兴知道有多种“优雅”的方法可以做到这一点。我也对你的答案投了赞成票。谢谢你!
const obj = {}
["checkbox1Value", "checkbox4Value"].forEach(val => {
    obj[val] = true
}