数组在JS中作为索引的行为

时间:2017-11-15 03:07:47

标签: javascript arrays

数组的索引可以是数组(在Chrome中测试):

a = [1, 2, 3]
index = [1]
a[index] // returns 2

是否有关于此行为的官方文档?

3 个答案:

答案 0 :(得分:4)

  

是否有关于此行为的官方文档?

12.3.2.1Runtime Semantics: Evaluation

定义以下3个步骤

3让propertyNameReference成为评估Expression的结果 4让propertyNameValue成为? GetValue(propertyNameReference)
6让propertyKey成为? ToPropertyKey(propertyNameValue)

然后7.1.14ToPropertyKey ( argument )被定义为

  1. key成为? ToPrimitive(argument, hint String)
  2. 如果Type(key)Symbol,则为 一个。返回key
  3. 回归! ToString(key)
  4. 这实际上意味着,除非表达式返回Symbol - 否则它(键)将被转换为字符串。

答案 1 :(得分:3)

正如@Ryan和@ 4castle所提到的,javascript使用key[].join(',')(在[]内部)转换为字符串。 您可以在此代码段中对其进行测试。



var abc = {
  "1,2": "ddd"
  };
 console.log(abc[[1,2]]);




答案 2 :(得分:1)

a[index]将对索引执行toString,并且由于index是一个数组,因此其字符串为index.join(),使得输出a['1']

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_Accessors