【问题标题】:Is there a possible way to loop through arrays at a specific range rather than loop through the whole thing?有没有一种可能的方法来循环遍历特定范围内的数组而不是遍历整个数组?
【发布时间】:2017-09-20 06:15:31
【问题描述】:

我目前正在通过数组练习来练习我的数组迭代编程。我有一个字符串对象数组,看起来像这样。

var balling = [
  "Calvin Klein", "Tommy Hilfiger", "FUBU", "Rocca Wear",
  "Calvin Klein", "Tommy Hilfiger", "FUBU", "Rocca Wear"
];

现在我知道,如果我像这样进入并循环遍历所有这些,将会起作用。

for (var i = 0; i < balling.length; i++) {
  balling[i] = console.log(balling[i]);
};

然后整个内容从上到下一一打印出来。

我宁愿做的不是打印出该数组中的所有 8 个对象,而是希望 for 指定我的数组中的特定对象范围。

我必须为我的for 循环做什么才能获得我想要的结果?有没有办法让我指定我的数组中有多少对象被打印出来?不只是一个,而是两个、三个,还有一个开始数组的起点和一个设定的范围?

【问题讨论】:

  • 如果你只想显示后半部分,你可以使用类似:for (var i = balling.length/2, etc etc)
  • 如果我想更进一步并具体指定我想显示多少对象?
  • 我不太明白你在问什么。您如何确定要显示的项目数量?
  • 检查编辑,但基本上就是你刚才所说的,我在问如何确定该 for 循环中实际显示了多少项目。
  • array.length 将为您提供数组中有多少项。 'i' 变量的声明将确定数组的起点,换句话说,假设您正在增加变量,就像您展示的那样,首先访问哪个元素。也请检查我的答案。

标签: javascript arrays for-loop arrayiterator


【解决方案1】:

您可以更改为 start 和 range 声明一个 var 来定义显示的数量,例如:

var start = 1;
var range = 4;

for (var i = start; i < start + range; i++) {
  balling[i] = console.log(balling[i]);
};

【讨论】:

    【解决方案2】:

    当您在 for 循环中声明 'i' 变量时,这基本上就是起点。

    例如,给定数组 ['a', 'b', 'c', 'd'] 和循环:

      for (var i = 1; i < array.length; i++ ) {
         console.log(array[i]);
      }
    

    这将打印出'b'、'c'和'd',因为'i'变量是1而不是0,它不会打印第一个元素。有意义吗?

    【讨论】:

      【解决方案3】:

      您可以创建一个数组,其中包含反映应在for 循环中迭代的索引范围的元素。递增范围的第一个元素,直到达到范围的第二个元素。

      var balling = ["Calvin Klein", "Tommy Hilfiger", "FUBU", "Rocca Wear"
                    , "Calvin Klein", "Tommy Hilfiger", "FUBU", "Rocca Wear"];
      
      var [from, to] = [2, 5];
      
      for (; from < to; from++) console.log(balling[from]);

      【讨论】:

        【解决方案4】:

        您可以使用Math.min(a,b) 函数,该函数从ab 中获取最小值,因此如果数组长度小于您希望获得的最小条目数,则不会有问题:

        var min_entries = 4;
        
        for (var i = 0; i < Math.min(balling.length, min_entries); i++) {
          balling[i] = console.log(balling[i]);
        };
        

        如果你想要一个不同的范围,你也可以使用Array.prototype.slice 方法: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice?v=example

        var a = ['zero', 'one', 'two', 'three'];
        var sliced = a.slice(1, 3);
        
        console.log(a);      // ['zero', 'one', 'two', 'three']
        console.log(sliced); // ['one', 'two']
        

        【讨论】:

          猜你喜欢
          • 2017-05-14
          • 2015-07-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-11-22
          • 1970-01-01
          • 2017-02-03
          • 2019-07-10
          相关资源
          最近更新 更多