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

时间:2018-02-08 14:51:04

标签: javascript ecmascript-6

想知道在javascript中是否有一种很好的方式,最好是es6,将一个字符串数组转换为动态创建的对象中的字段名称。

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

["checkbox1Value", "checkbox4Value"]

我想用这些结果做到这一点:

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

无论如何通过es6做到这一点?

5 个答案:

答案 0 :(得分:4)

您可以使用computed property names并映射单个对象并将其分配给单个对象。



var array = ["checkbox1Value", "checkbox4Value"],
    object = Object.assign(...array.map(k => ({ [k]: true })));

console.log(object);




答案 1 :(得分:3)

    let result = ["checkbox1Value", "checkbox4Value"];
    const answer = result.reduce((acc, cur) => {acc[cur] = true; return acc}, {});

    console.log(answer);

.reduce实际上只是一个花哨的for循环(“ES6方式”)。如果您的拍摄效率最高,请改为使用常规for循环。

答案 2 :(得分:3)

const myArray = ["checkbox1Value", "checkbox4Value"];

let obj = {};

myArray.forEach(val => {
    obj[val] = true;
})

console.log(obj);

答案 3 :(得分:1)

关于这一点,没有什么ES6-y:

let keys = ["checkbox1Value", "checkbox4Value"];
let obj = {};
for (let key of keys) {
  obj[key] = true;
}
console.log(obj);

答案 4 :(得分:1)

你可以把它映射到像这样的对象

const obj = {}
["checkbox1Value", "checkbox4Value"].forEach(val => {
    obj[val] = true
}