Count number of values in array between two input values

前端 未结 4 1748
鱼传尺愫
鱼传尺愫 2021-01-28 17:05

As the title suggests, I want to create a function the counts the number of values in my array between two values that have been entered by the user. So for example, if the arra

相关标签:
4条回答
  • 2021-01-28 17:10

    You can create an extremely clean solution to this problem by utilizing the second property of Array#filter (which sets the this binding given to your callback of choice):

    var array = [1, 4, 6, 7, 8, 6]
    
    function inRange (x) {
      return this[0] <= x && x <= this[1]
    }
    
    var result = array.filter(inRange, [5, 7]).length
    
    console.log('Total number of values:', result)

    0 讨论(0)
  • 2021-01-28 17:14

    All you need is a simple for loop.

    var total = 0;
    var num1 = 5;
    var num2 = 7;
    var array = [1,4,6,7,8,6];
    for(var a = 0; a < array.length; a++) {
        if(array[a] >= num1 && array[a] <= num2) {
             total++;
        }
    }
    alert("Total numbers of values = " + total);
    

    This will loop through the array, detect nums within the range, tally up a value, and output it in a alert.

    0 讨论(0)
  • 2021-01-28 17:24

    You can use Array.prototype.filter(), RegExp.prototype.test() with RegExp constructor with class from-to, where from is 5, to is 7, get .length of resulting array

    var from = 5;
    var to = 7;
    var len = arr.filter(RegExp.prototype.test.bind(new RegExp(`[${from}-${to}]`))).length;
    

    You can alternatively use .toString(), .match()

    var arr = [1,4,6,7,8,6];
    var from = 5;
    var to = 7;
    var res = arr.toString().match(new RegExp(`[${from}-${to}]`, "g"));
    var len = res.length;
    
    console.log(res.length);

    0 讨论(0)
  • 2021-01-28 17:30

    You may do as follows;

    var arr = [1,4,6,7,8,6],
      input = [5,7],
     result = arr.reduce((r,n) => n >= input[0] && n <= input[1] ? ++r : r, 0);
    console.log(result);

    0 讨论(0)
提交回复
热议问题