将数组元素作为属性名称注入时,JavaScript字典语法错误

时间:2018-10-10 12:45:18

标签: javascript dictionary

我正在运行这段代码,但是给出的结果很奇怪?

let surveyTypes = [1,2];

let surveyDuration = {
  surveyTypes[0]:  'first',surveyTypes[1]:  'second' 
}

预期输出:

surveyDuration={1:'first',2:'second'}

实际输出:

  

未捕获的SyntaxError:意外令牌[

2 个答案:

答案 0 :(得分:5)

由于要创建wrap键,因此必须dynamic将数组的项插入到括号中。

let surveyTypes = [1,2];

let surveyDuration = {
  [surveyTypes[0]]:  'first',[surveyTypes[1]]:  'second' 
}

console.log(surveyDuration);

答案 1 :(得分:2)

尝试:

let surveyTypes = [1,2];

let surveyDuration = {
  [surveyTypes[0]]: 'first',
  [surveyTypes[1]]: 'second' 
}

为了评估密钥名称,它必须放在方括号内。您可以阅读有关此here

的更多信息

尽管surveyTypes[0]确实返回了1,但您不能单独使用它作为对象键的原因,纯粹是因为javascript的语法不允许它。选择此语法是为了允许您编写与表达式不冲突的纯键。例如:

const obj = {
  hello: 'there'
}

vs

const hello = 5
const obj = {
  hello: 'there'
}

请注意,如果没有括号符号,它们将是多么模棱两可。