两级数组中的对象.导致意外令牌 [.
object from two-level array. causes Unexpected token [
var data=[['a','1'],['b','2']];
这应该很容易制作成一个对象
var Obj={data[0][0]:data[0][1],data[1][0]:data[1][1]}
而是创建语法错误:意外的令牌 [
为什么当我尝试以这种方式构造对象时,JavaScript 无法正确看到数组部分?在 {} 对象之外时
console.log(data[0][0]); // "a"
我很困惑为什么这会抛出一个错误,就好像我缺少一个禁忌规则一样。我是否被迫将数据部分存储在临时变量中?这样:
var data=[['a','1'],['b',2]];
var t1=data[0][0]
, t2=data[0][1]
, t3=data[1][0]
, t4=data[1][1];
var obj={t1:t2,t3:t4}; // no error
这对于 JavaScript 来说似乎太严格了,我在这里肯定错过了一些东西!
你不能这样做,它不是对象文字的有效语法:
var Obj= {
data[0][0]:data[0][1],
data[1][0]:data[1][1]
}
您不能在这样的对象文本中使用变量作为属性的名称。在第二个示例中:
var obj={t1:t2,t3:t4}; // no error
你没有得到任何错误,但你也没有得到你所期望的。如果你看一下生成的对象,你会看到这个:
{ t1: "1", t3: 2 };
换句话说,您创建了一个具有属性 t1
和 t3
的对象,而不是 a
和 b
。
您必须创建一个空对象并使用括号表示法填充它[]
:
var obj = {};
obj[data[0][0]] = data[0][1];
obj[data[1][0]] = data[1][1];
每当要使用变量作为对象的属性名称时,都需要使用括号表示法。换句话说:
var t1 = "B";
obj[t1] = "foo";
与此不同:
var t1 = "B";
obj.t1 = "foo";
在第一种情况下,您将名为 B
on obj
的属性设置为字符串 "foo"
。在第二种情况下,您将属性t1
obj
设置为"foo"
。对象文本语法更像是使用点表示法。
为了使您想要做的事情更简单,您可以按照@Nikos的答案循环访问数组。或者你可以花哨并使用.reduce
:
var data = [
['a', '1'],
['b', 2]
];
var obj = data.reduce(function(curr, next) {
curr[next[0]] = next[1];
return curr;
}, {});
alert(JSON.stringify(obj));
i我认为这对于您想要做的事情要简单得多。
var data=[['a','1'],['b','2']];
var Obj={};
for (i=0; i<data.length; i++) {
Obj[data[i][0]]=data[i][1]
}
console.log(Obj); // returns Object { a="1", b="2"}
相关文章:
- 使用带有自定义对象作为属性的jQuery.extend时出现意外行为
- 未捕获的语法错误:javascript对象上出现意外的标记ILLEGAL
- 意外结果,在 ASP.Net 中解析 JSON 对象的数组
- 使用 JSON.parse 将字符串(变量)转换为对象,错误意外标记
- 错误:'这'对象不正确;在JQuery中单击事件-单击时的意外行为
- 为什么JSON.parse()在尝试解析一个简单的JSON对象时抛出Uncaught SyntaxError:意外的令牌
- 如何访问以数字开头的对象属性(语法错误:意外的标识符)
- ng单击错误:[$parse:syntax]语法错误:令牌'对象'意外,应为[]
- 试图解析一个大型JSON对象并提取数据,但不断出现意外的令牌错误
- JS对象属性被意外重写
- JavaScript 或 Node.js意外地对对象进行排序
- 两级数组中的对象.导致意外令牌 [.
- 咖啡脚本:当我尝试创建对象文字的对象文字时,意外的“{”
- 语法错误:JSON 分析错误:意外的标识符“对象”
- 将变量打印到控制台时出现意外字符串:[对象窗口]
- 意外的 Javascript Date 对象隐式转换
- 跨 ajax 请求到服务器返回的 json 对象显示错误意外令牌:
- Webpack require 方法返回意外的对象
- AngularJS分析JSON数组对象意外的令牌:
- Javascript对象意外地共享数据