我有以下数组
const lastThreeYearsArr = [currYear, currYear-1, currYear-2 ]
我需要将对象定义为:
var obj = {lastThreeYearsArr[0]: 0, lastThreeYearsArr[1]: 0, lastThreeYearsArr[2]: 0};
但是使用数组作为键似乎在javascript中不起作用。有没有办法访问数组值并将其作为键放在对象中。
答案 0 :(得分:2)
您可以通过迭代键创建新对象,并使用Object.assign
computed property names。
var lastThreeYearsArr = ['currYear', 'currYear-1', 'currYear-2'],
object = lastThreeYearsArr.reduce((o, k) => Object.assign(o, { [k]: 0 }), {});
console.log(object);

答案 1 :(得分:0)
您可以使用括号表示法而不是对象文字符号来指定属性。例如:
const x = [2011, 2012, 2013]
let y = {}
y[x[0]] = 0
答案 2 :(得分:0)
使用简单的forEach并使用bracket notation指定新属性:
const currYear = (new Date()).getFullYear();
const lty = [currYear, currYear - 1, currYear - 2]
let result = {};
lty.forEach((e, i) => {
result[e] = 0
})
console.log(result)

答案 3 :(得分:0)
用括号[]
附上每个键,用于computed property names
您可以使用已建议的Object.assign,但如果需要IE兼容性,基本循环也会这样做。
var currYear = 2018;
var lastThreeYearsArr = [currYear, currYear - 1, currYear - 2]
var obj = {};
for (var i = 0; i < lastThreeYearsArr.length; i++) {
obj[lastThreeYearsArr[i]] = 0;
}
console.log(obj);