【发布时间】:2015-04-29 11:27:09
【问题描述】:
我提出这个问题的动机
对我来说,编程的快感在于对给定语言背后的逻辑的深刻理解使您能够使用该逻辑“解决问题”。因此,当我偶然发现似乎错过了这种逻辑的东西时,我会感到困扰。
索引的工作原理
这是我学到的关于使用数组索引的知识:
var fruit = ["Apple", "Orange", "Kiwi"]
fruit.length = 3 // returns the length of the fruit array
var rotten = fruit[2] //assigns the value "Kiwi" to the variable "rotten"
fruit[2] = "Melon" //changes the 3rd object in the array fruit from "Kiwi" to "Melon"
fruit[fruit.length] = "Melon" //adds a new object to the array fruit after "Kiwi"
逻辑有什么困扰我
所以我刚刚使用.length获取我的水果数组长度为3的信息。接下来我想使用var rotten = fruit[] 访问第三个对象。我的逻辑告诉我应该使用var rotten = fruit[3] 来执行此操作。但这会返回 undefined,因为对象的索引为 0、1、2。
同样,我的直接想法是使用以下代码将对象添加到数组中:fruit[fruit.length + 1] = "Melon" 因为我知道.length 方法返回数组中的“最后一个对象的编号”。当然实际情况并非如此,因为当考虑索引为 0、1、2 时,这实际上是 2。
我的问题
在不使用 1、2、3 而不是 0、1、2 来索引数组的背后是否有更深层次的逻辑,从而使 - 在我看来 - 更直观地理解和使用 Javascript 或者这只是你应该做的事情了解我的内心并接受而不寻找任何更深层次的理由?
【问题讨论】:
-
谢谢大家。我的目的不是引发一场辩论——只是认为实际上可能存在潜在的逻辑。似乎从答案中可以看出,即使您可能在某种程度上可以为这两种索引提出论据,但似乎没有 - 这是另一个时间和地点的辩论。
标签: javascript arrays indexing string-length