用于在JavaScript中使用复合键创建对象的语法

问题描述 投票:5回答:3

是否存在用于传递复合键(即列表和对象,像下面的示例一样,或者是设计使然?

> obj = {[1, 2]: 3};
SyntaxError: Unexpected token [

第二个示例工作正常,还不错,但是我想知道是否还有其他方法。

> obj = {};
> obj[[1, 2]] = 3;
3
> [1, 2] in obj;
> true
javascript composite-key
3个回答
11
投票
JavaScript中的

对象属性名称最后只是字符串,您的第二个示例似乎起作用,因为方括号属性访问器将[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
投票

您是否需要将[1, 2]保存为数组?这究竟能使您做什么?我对“复合键”不熟悉,因此也许简短说明一下链接可以使我更好地理解您的问题。


0
投票

如果您不想进行字符串连接,则可以使用嵌套映射,然后使用包装器使代码不太冗长。这是TypeScript中的示例。

© www.soinside.com 2019 - 2024. All rights reserved.