Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果下一个元素等于上一个元素,如何减少JS数组长度_Javascript_Arrays - Fatal编程技术网

Javascript 如果下一个元素等于上一个元素,如何减少JS数组长度

Javascript 如果下一个元素等于上一个元素,如何减少JS数组长度,javascript,arrays,Javascript,Arrays,我问一个问题,因为我不知道怎么做。 我尝试使用进行映射减少,但我不明白该怎么办 let array = [3,2,2,5,1,1,7,1]; array.map((e,i,ar)=>{ if(e === ar[i+1] || (e[0] && e[0] === ar[i+1]) ){ return [e,e[1]+1] } return e; }) 如何从数组中获取数组=>[3、[2,2]、5、[1,2]、7,1]您可以减少数组,如果值等于最后一个值,则取一个

我问一个问题,因为我不知道怎么做。 我尝试使用
进行
映射
减少
,但我不明白该怎么办

let array = [3,2,2,5,1,1,7,1];
array.map((e,i,ar)=>{
 if(e === ar[i+1] || (e[0] && e[0] === ar[i+1]) ){
  return [e,e[1]+1]
 }

 return e;
})

如何从数组中获取数组=>
[3、[2,2]、5、[1,2]、7,1]
您可以减少数组,如果值等于最后一个值,则取一个数组并增加计数器

const
getGrouped=array=>array.reduce((r,v,i,{[i-1]:last})=>{
如果(v==最后一个){
如果(!Array.isArray(r[r.length-1])r[r.length-1]=[r[r.length-1],1];
r[r.length-1][1]+;
}否则{
r、 推(v);
}
返回r;
}, []);
log(getGrouped([3,2,2,5,1,1,1,7,1]);

log(getGrouped([2,2,2,3])只需使用
Array.reduce()

谢谢你,乔瑟夫-答案是:

function splitCounts(arr) {
  let res = [];
  let count = 1;

  for (let i=0; i<arr.length; i++) {
    if (arr[i] === arr[i+1]) {
      count++;
    } else {
      res.push([arr[i], count]);
      count = 1;
    }
  }

  return res;
}

// [[3,1],[2,2],[5,1],[1,2],[7,1],[1,1]]
console.log(splitCounts([3,2,2,5,1,1,7,1]));
函数拆分计数(arr){
设res=[];
让计数=1;

对于(让i=0;我不知道如何使用reduce实现这一点问题不太清楚!要对类似的项进行分组吗?是的,我想对元素进行分组,如果它们很近,即使它起作用,它看起来像古阿拉姆语文本。代码应该可以立即理解,特别是如果代码只有几行。在know中共享这样的解决方案是没有意义的ledge共享平台。这只是熵。这工作不好。如果在reduce之后数组=[2,2,2,3],我们得到=[2,2,3]第一个元素ignored@AlexLatro对不起,应该可以了。计数器初始化错误。