如何从1而不是0开始一个数组

时间:2015-09-01 04:35:35

标签: javascript arrays

<script>
      var level = ["Kindergarten", "ElemantarySchool"];
      var years = [];
      years[0] = ["1", "2", "3"];
      years[1] = ["1", "2", "3", "4", "5", "6"];

      for (var i = 0; i < level.length; i++){
           var levelOption = new Option(level[i], i);
           document.getElementById("level").appendChild(levelOption);
      }
      changeyears();
      function changeyears() {
           var yearsSelect = document.getElementById("years");
           while (yearsSelect.childNodes.length > 0) {
                  yearsSelect.removeChild(yearsSelect.childNodes[0]);
           }
           var yearsList = years[document.getElementById("level").selectedIndex];
           for (var i = 0; i < yearsList.length; i++) {
               document.getElementById("years").appendChild(new Option(yearsList[i], i));
           }
      }
</script>

我不想要值0.我希望两个数组都从值1开始。

<select name="years">
    <option value="0">1</option>
    <option value="0">1</option>
    <option value="0">1</option>
</select>

2 个答案:

答案 0 :(得分:1)

数组索引不能从0改变,我们必须写一个逻辑来访问索引的方式,而访问你可以根据你的要求操作它。

为什么数组索引应该从零开始并不是一个微不足道的,它与计算机科学中的有趣概念有关。首先,它与语言设计有很强的关系。例如,在C中,数组的名称本质上是指针,对内存位置的引用,因此表达式array [n]指的是远离起始元素的n元素的内存位置。这意味着索引用作偏移量。数组的第一个元素完全包含在数组引用的内存位置(0个元素之外),因此它应该表示为array [0]。大多数编程语言都是以这种方式设计的,因此从0开始的索引几乎是该语言所固有的。

已经有很多讨论可以找到Why The Array Index Should Start From 0Why does the indexing start with zero in 'C'?

答案 1 :(得分:1)

你只需要替换(i - &gt;(i + 1)):

<script>
      var level = ["Kindergarten", "ElemantarySchool"];
      var years = [];
      years[0] = ["1", "2", "3"];
      years[1] = ["1", "2", "3", "4", "5", "6"];

      for (var i = 0; i < level.length; i++){
           var levelOption = new Option(level[i], (i+1));
           document.getElementById("level").appendChild(levelOption);
      }
      changeyears();
      function changeyears() {
           var yearsSelect = document.getElementById("years");
           while (yearsSelect.childNodes.length > 0) {
                  yearsSelect.removeChild(yearsSelect.childNodes[0]);
           }
           var yearsList = years[document.getElementById("level").selectedIndex];
           for (var i = 0; i < yearsList.length; i++) {
               document.getElementById("years").appendChild(new Option(yearsList[i], (i+1)));
           }
      }
</script>