javascript - 使用数组项作为对象中的键时出现意外 token 错误

标签 javascript arrays associative-array

在 Chrome 中,以下 JavaScript 代码会引发意外 token 错误:

var somearray = ["foo","bar"];
var someassoc = {somearray[0]:somearray[1]};

抛出的错误:

Uncaught SyntaxError: Unexpected token [

相反,我希望它应该创建一个 key 为 somearray[0] 的对象以及 somearray[1] 的项目对于该键。

那么,为什么会发生这种情况呢?安Unexpected Token通常意味着括号被放错地方了,等等,但这里的情况并非如此。

最佳答案

JS 对象字面量的键必须是静态键,或者是包含在 [] 中的表达式(需要 ES2015 支持)。

您的代码的问题是 somearray[0] 键无效。

因此,如果您需要 ES5 方式,请将其重写为

var somearray = ["foo","bar"];
var someassoc = {};
someassoc[somearray[0]] = somearray[1];

对于 ES2015,您使用

var somearray = ["foo","bar"];
var someassoc = { [somearray[0]]: somearray[1]};

标准的相关部分:

简而言之: key 必须是有效的标识符。

关于javascript - 使用数组项作为对象中的键时出现意外 token 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34713095/

相关文章:

javascript - 在 Javascript 中按子数组键的长度对数组进行排序

Python:将元素添加到字典列表或关联数组

php - 在返回的 MySQL 值数组上设置索引

javascript - 如何仅在页面加载完成且调用另一个函数后才调用函数

javascript - 获取 href 上的请求状态

java - 无法将 arraylist 值传输到数组

javascript - 遍历嵌套数组并删除重复项,同时添加其他元素

javascript - 将图像从电脑添加到页面而不使用输入文件

javascript - HTML 复选框返回值?

javascript - 如何将 JSON 对象转换为数组数组