代码之家  ›  专栏  ›  技术社区  ›  Hailwood

javascript计数

  •  0
  • Hailwood  · 技术社区  · 15 年前

    为了实现这一点,我稍微停留在javascript逻辑上。

    基本上

    如果我给一个数字(比如30)

    我想给你们看两边各5个。

    所以

    25 26 27 28 29 30 31 32 33 34 35

    那部分很简单。

    但我需要处理数字低于5的情况(比如说3)。

    我想要的是,

    每一个没有显示在右边的数字, 把它加到左边

    所以

    1 2 3 4 5 6 7 8 9 10 11

    但是,我需要处理数量超过A(最大值为5)的情况(比如最大值=100,数字=98)。

    我想要的是,

    每一个没有显示在左边的数字, 把它加到右边

    所以

    90 91 92 93 94 95 96 97 98 99 100

    但是我需要处理最大值低于10的情况(比如数字=3,最大值=8)。

    我想要的是,

    只显示适用范围

    所以

    1 2 3 4 5 6 7 8

    但我不确定逻辑

    5 回复  |  直到 15 年前
        1
  •  1
  •   Ben    15 年前
    function ranger(num) {
      //Establish limits and pre/post array storage
      var low = 0, high = 100, howMany = 5;
      var pre = [];
      var post = [];
    
      //Increment/decrement if appropriate
      for(x=1;x<=howMany;x++) {
        if((num-x) > low) { pre.push(num-x); }
        if((num+x) < high) { post.push(num+x); }
      }
      pre.reverse();
    
      alert("Before: "+pre+'\nNumber: '+num+'\nAfter: '+post)
    }
    
    ranger(7);
    ranger(2);
    ranger(96);
    
        2
  •  1
  •   kgiannakakis    15 年前

    对所有案例进行测试:

    range = 5;
    maximum = 8;
    number = 3;
    left = right = number;
    
    while(right - left < range*2 ) {
        if (right + 1 <= maximum) {
          right++;
        }
        if (left - 1 > 0 ) {
          left--;
        }
        if (right == maximum && left == 1) {
          break;
        }
    }
    
    for(i=left;i<=right;i++) {
      console.log(i);
    }
    
        3
  •  1
  •   Hamish    15 年前

    一种可能的解决方案:

    function getPages(fromPageNumber) {
        var result = [];
        fromPageNumber= Math.min(94, Math.max(6, fromPageNumber));
        for(var i = -5; i <=5; i++)
            result.push(fromPageNumber + i);
        return result;
    }
    
        4
  •  0
  •   Marcus Whybrow    15 年前
    // Set up your limits and bounds
    var radius = 5.
        middleNumber = 20,
        lowerBound = 1,
        upperBound = 100;
    
    // For the defined (and available range) create an array of valid numbers
    var results = [];
    for (int i = Math.max(middleNumber - radius, lowerBound);
         i <= Math.min(middleNumber + radius, upperBound);
         i++) {
        results.push(i);
    }
    
    // Print out the resulting numbers with spaces in between
    console.log(results.join(' '));
    
        5
  •  0
  •   Yishai Landau    15 年前
    function getSequence(num, length)
    {
      var min = 0; 
      var max=100;
      Array result;
      for(int i=num-(length/2); i<num+(length/2);i++)
      {
        if(i>min && i< max)
        result.add(i);
      }
      return result;
    }