这是一个例子:
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个元素...那是怎么回事?
最佳答案
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";
向数组添加项目时要当心,例如,如果您这样写myArray[1000] = "2nd string";console.log(myArray)
,则结果看起来像["A String", 1000: "2nd string", aRandomKey: "An Other String"]
,而长度将是1001