想知道在javascript中是否有一种很好的方式,最好是es6,将一个字符串数组转换为动态创建的对象中的字段名称。
例如,假设我从地图函数中得到以下结果:
["checkbox1Value", "checkbox4Value"]
我想用这些结果做到这一点:
const answer = {
//some other fields dynamically created
checkbox1Value: true,
checkbox4Value: true
}
无论如何通过es6做到这一点?
答案 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
}