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对不起,应该可以了。计数器初始化错误。