Javascript 如何返回具有特定条件的连续子阵列的长度

Javascript 如何返回具有特定条件的连续子阵列的长度,javascript,arrays,Javascript,Arrays,我的任务是创建一个数组,该数组接受另一个数组,并返回满足以下条件的每个索引的连续子数组数: -索引i处的值是子阵列的最大值 -连续子阵列必须以i开头或结尾 我就快到了,但是我缺少确保函数检查数组元素的代码,而数组元素不是直接位于我的两侧(请参见下面的代码)。我想我可能需要某种递归调用,在传递“forward”和“backward”的更新值时再次运行if语句。或者我完全采取了错误的方法 有什么想法吗 function countSubarrays(arr){ var arr = [3, 4,

我的任务是创建一个数组,该数组接受另一个数组,并返回满足以下条件的每个索引的连续子数组数:

-索引i处的值是子阵列的最大值 -连续子阵列必须以i开头或结尾

我就快到了,但是我缺少确保函数检查数组元素的代码,而数组元素不是直接位于我的两侧(请参见下面的代码)。我想我可能需要某种递归调用,在传递“forward”和“backward”的更新值时再次运行if语句。或者我完全采取了错误的方法

有什么想法吗

function countSubarrays(arr){
  var arr = [3, 4, 1, 6, 2];
  var output = [];

  for (var i = 0; i < arr.length; i++){
    var total = 1;
    var forward = 1;
    var backward = 1;

    if (arr[i] >= arr[i+forward]) {
      total++;
      forward++;
      // Some sort of recursive call here?
    }

    if (arr[i] >= arr[i-backward]){
      total++;
      backward++;
      // Some sort of recursive call here?
    }

    output.push(total);
  }
  console.log(output);
}

countSubarrays();
函数计数子阵列(arr){
var-arr=[3,4,1,6,2];
var输出=[];
对于(变量i=0;i=arr[i+转发]){
总计++;
forward++;
//这里有某种递归调用吗?
}
如果(arr[i]>=arr[i-向后]){
总计++;
向后++;
//这里有某种递归调用吗?
}
输出。推送(总);
}
控制台日志(输出);
}
计数子数组();

您需要向前或向后计算小于或等于实际元素的项目

函数计数子数组(数组){
var输出=[];
for(设i=0;i=array[j])total++;
j=i;
而(++j=array[j])总计++;
输出。推送(总);
}
返回输出;
}

log(countsubarray([3,4,1,6,2])你能分享一些例子吗,比如问题中的输入和预期输出!当然,我已经在[3,4,1,6,2]中对原始数组进行了硬编码,预期的输出应该是[1,3,1,5,1],但我当前的输出是[1,3,1,3,1],因为我的函数还没有将I与不在它旁边的数组元素进行比较。