在推送数组并分配像对象一样的键值对之后,数组的长度是多少

时间:2016-07-12 14:42:54

标签: javascript arrays object

这是一个例子:

var myArray = []
myArray.push('A String')
console.log(myArray.length) // got: 1
myArray['aRandomKey']='An Other String'
console.log(myArray.length) // got: 1

所以基本上第二个元素没有添加到数组中,因为长度没有改变。但是当我记录数组时:

console.log(myArray) // got: ["A String", aRandomKey: "An Other String"]

我看到myArray有2个元素......那么发生了什么?

1 个答案:

答案 0 :(得分:1)

JSFIDDLE DEMO

var myArray = []
myArray.push('A String')
console.log(myArray.length) // got: 1
myArray['aRandomKey']='An Other String'
console.log(myArray.length) // got: 1

少数事情

myArray[1] = "2nd string";
console.log(myArray.length);// you'll get 2

console.log(myArray.aRandomKey); // An Other String
console.log(myArray["aRandomKey"]); // An Other String
console.log(myArray) // ["A String", "2nd string", aRandomKey: "An Other String"]

通过查看上述语句,仅当您使用push()或使用整数键myArray[1]进行分配时,该值才会被推送到数组中。如果添加非数字键而不是整数,它仍会作为属性添加到数组对象中,但不会作为项目被推送,并且可以通过上面的对象表示法访问。

注意 :在以这种方式向数组添加项目时要小心myArray[1] = "2nd string";例如,如果你这样写{{1} },结果看起来像myArray[1000] = "2nd string";console.log(myArray),长度将是["A String", 1000: "2nd string", aRandomKey: "An Other String"]