Javascript: 添加一个键值对到数组
Javascript: adding a key-value pair to array
我注意到我可以将键值对添加到数组(不是对象,数组)。
var a = []; // create the array
a[0] = "test"; // conventionally setting an index of 0 to a value
a["foo"] = "bar"; // this actually sets a "key" of the array to "bar"
如果我尝试获取 a.foo
或 `a["foo"] 的值,我只会得到 "bar"。没有出现错误。
我知道一个Javascript数组其实是一个对象,但是有特殊的规则,但是这样不报错感觉怪怪的。
我使用的是最新版本的 Chrome。
是否有可以这样做的实际用例?关于这个事实的常见做法是什么?
现在试试这个:
> Object.getOwnPropertyNames(a)
[ '0', 'length', 'foo' ]
> a.length
1
欢迎来到JavaScript!真是个好地方...
是的,您可以在数组上创建命名属性。不,你可能不应该。它们不会被计算在 Array.length
中,大多数阅读您的代码的开发人员都会遇到不太可能导致积极结果的混乱时刻。
如果您需要命名 属性,请使用(非数组)对象。
我注意到我可以将键值对添加到数组(不是对象,数组)。
var a = []; // create the array
a[0] = "test"; // conventionally setting an index of 0 to a value
a["foo"] = "bar"; // this actually sets a "key" of the array to "bar"
如果我尝试获取 a.foo
或 `a["foo"] 的值,我只会得到 "bar"。没有出现错误。
我知道一个Javascript数组其实是一个对象,但是有特殊的规则,但是这样不报错感觉怪怪的。
我使用的是最新版本的 Chrome。
是否有可以这样做的实际用例?关于这个事实的常见做法是什么?
现在试试这个:
> Object.getOwnPropertyNames(a)
[ '0', 'length', 'foo' ]
> a.length
1
欢迎来到JavaScript!真是个好地方...
是的,您可以在数组上创建命名属性。不,你可能不应该。它们不会被计算在 Array.length
中,大多数阅读您的代码的开发人员都会遇到不太可能导致积极结果的混乱时刻。
如果您需要命名 属性,请使用(非数组)对象。