Javascript对象 - 使用数组值作为键

时间:2018-04-26 15:34:10

标签: javascript

我有以下数组

  const lastThreeYearsArr = [currYear, currYear-1, currYear-2 ]

我需要将对象定义为:

var obj = {lastThreeYearsArr[0]: 0, lastThreeYearsArr[1]: 0, lastThreeYearsArr[2]: 0};

但是使用数组作为键似乎在javascript中不起作用。有没有办法访问数组值并将其作为键放在对象中。

4 个答案:

答案 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);