是否存在用于传递复合键(即列表和对象,像下面的示例一样,或者是设计使然?
> obj = {[1, 2]: 3};
SyntaxError: Unexpected token [
第二个示例工作正常,还不错,但是我想知道是否还有其他方法。
> obj = {};
> obj[[1, 2]] = 3;
3
> [1, 2] in obj;
> true
对象属性名称最后只是字符串,您的第二个示例似乎起作用,因为方括号属性访问器将[1, 2]
表达式转换为String
(返回"1,2"
),例如:] >
var obj = {}; obj[[1, 2]] = 3; console.log(obj["1,2"]); // 3
另一个例子:
var foo = { toString: function () { return "bar"; } }, obj = {}; obj[foo] = 3; // foo is converted to String ("bar") console.log(obj["bar"]); // 3
另请参见:
您是否需要将[1, 2]
保存为数组?这究竟能使您做什么?我对“复合键”不熟悉,因此也许简短说明一下链接可以使我更好地理解您的问题。
如果您不想进行字符串连接,则可以使用嵌套映射,然后使用包装器使代码不太冗长。这是TypeScript中的示例。