Javascript ld获取一个对象作为临时结果,并在检查值时迭代数组。如果找到真实值,请检查、更新并重置计数器。否则,请检查计数器并获取索引,以便以后存储

Javascript ld获取一个对象作为临时结果,并在检查值时迭代数组。如果找到真实值,请检查、更新并重置计数器。否则,请检查计数器并获取索引,以便以后存储,javascript,Javascript,最后返回索引 函数holLength(数组){ var result={count:0}, 计数=0, 指数 array.forEach((v,i)=>{ 如果(v){ if(result.count{ 如果(v){ if(result.count我知道OP所说的->但是首先修复第一部分可能更简单,但老实说,两者都做是有意义的,。。你的倒数第二个不是返回4@Keith,这两个组不适合在一起,但是第二个带计数的组现在采用了不同的方法,使用一个带有特定索引计数的对象。我知道OP说->,但首先修复第

最后返回索引

函数holLength(数组){
var result={count:0},
计数=0,
指数
array.forEach((v,i)=>{
如果(v){
if(result.count

.as console wrapper{max height:100%!important;top:0;}
您可以为临时结果获取一个对象,并在检查值时迭代数组。如果找到真实值,请检查、更新并重置计数器。否则,请检查计数器并获取索引,以便以后存储

最后返回索引

函数holLength(数组){
var result={count:0},
计数=0,
指数
array.forEach((v,i)=>{
如果(v){
if(result.count

。作为控制台包装器{max height:100%!重要;top:0;}/code>我知道OP所说的->
但是首先修复第一部分可能更简单,但老实说,两者都做是有意义的,。。你的倒数第二个不是返回
4
@Keith,这两个组不适合在一起,但是第二个带计数的组现在采用了不同的方法,使用一个带有特定索引计数的对象。我知道OP说->
,但首先修复第一部分可能更简单,但老实说,两者都做是有意义的,。。你倒数第二个没有返回
4
@Keith,这两个组不匹配,但是第二个使用counting One的对象现在使用了一种不同的方法,使用一个特定索引的count对象。我假设您现在跳过了这一点->
在0结束后,一行中还有更多的1
@keith我不确定他在这里的意思,对于所有的测试用例,它返回正确的结果。
对于所有的测试用例,它返回正确的结果
,很难说,因为某些原因,您从未将其创建为一个片段,。。我相信你通常也是,有什么原因吗?@keith不,我没有。1) 我通常在生产中进行测试;)可移动的是的,很遗憾我们不能把这些片段。。但是我刚刚用
[1,0,0,1,0,0,1,1]
进行了测试,它返回
1,1
,而不是
4,2
@user8758206您能确认一下吗,因为这是一个与您要求的结果不同的结果。我假设您现在跳过了这一位->
在0结束后,一行中还有更多的1
@keith我不确定他在这里的意思,对于所有的测试用例,它返回正确的结果。
对于所有的测试用例,它返回正确的结果,很难说,因为某种原因,你从来没有把它作为一个片段来创建,。。我相信你通常也是,有什么原因吗?@keith不,我没有。1) 我通常在生产中进行测试;)可移动的是的,很遗憾我们不能把这些片段。。但是我刚刚用
[1,0,0,1,0,0,1,1]
进行了测试,它返回
1,1
,而不是
4,2
@用户8758206您能否确认,因为这与您要求的结果不同。请在此部分添加一些信息“理想情况下,我希望它说明在0结束后一行中有更多1的索引”以及给定(最后两个)示例如何匹配。@NinaScholz他给出了两个示例->第一个
1,0,0,1,0,0,1,1
,。它是索引4,因为
0,0,1,1
0,0,1
后面的
0,0
有更多的1,。。无论如何,这就是我解释它的方式。请在这部分添加一些信息“理想情况下,我希望它说明在0结束后一行中有更多1的索引”以及给定(最后两个)示例如何匹配它。@NinaScholz他给出了两个示例->第一个
1,0,0,1,0,0,1,1
,。它是索引4,因为
0,0,1,1
0,0,1
后面的
0,0
有更多的1,。。不管怎样,我就是这样解释的。。
holLength([1,1,0,1,0,0,1]); // starts at index 4
holLength([0,0,1,0,0,0,1,1,0]); // starts at index 3
holLength([1,0,0,1,0,0,1,1]); // starts at index 1
holLength([1,0,0,1,1,1,0,0,1]); // starts at index 1
holLength([1,0,0,1,0,0,1]); // starts at index 1
    holLength([0,0,1,1,1,0,1]); // starts at index 0, and is WRONG
holLength([0,1,1,0,0,1,1]); // starts at index 3
holLength([1,0,0,1,0,0,1,1]); // starts at index 4
holLength([1,0,0,1,1,0,0,1]); // starts at index 1
 function occurences(array) {
    const counts = {}, max = {};
    let count = 0, start = 0, current = array[0];
    for(const [index, el] of array.entries()) {
       if(el === current) {
         count++;
       } else {
          (counts[current] || (counts[current] = [])).push({ count, start, end: index - 1});
          if(!max[current] || count > max[current].count) max[current] = { start, count, end: index - 1 };
          count = 1; current = el, start = index;
       }
   }

   return { count, max };
}
 const result = occurences([1,1,0,0,0,1,0,0]);

 console.log(
   result.max[0].start, // start position of the maximum 0 row
   result.max[1].count // maximum number of ones in a row
 );