Javascript 如何在这个算法中使用reduce?
我不知道为什么在代码中写入“else”字时会出现上述错误 及Javascript 如何在这个算法中使用reduce?,javascript,algorithm,Javascript,Algorithm,我不知道为什么在代码中写入“else”字时会出现上述错误 及 我想在评论中看到结果。解决这个问题有什么好处?您需要分配reduce操作的结果,如果块中的累加器也用于下一次迭代,还需要返回块中的累加器: /* 我想知道这个结果 计数=4/[1,1,3,3] 数组=[4,2,4] */ 让计数=0; 让数组=[4,3,1,1,3,2,4] 数组=数组。减少((acc,cur)=>{ if(附件[附件长度-1]==当前){ 附件pop() 计数+=2; 返回acc; }否则{ 返回acc.conca
我想在评论中看到结果。解决这个问题有什么好处?您需要分配
reduce
操作的结果,如果块中的累加器也用于下一次迭代,还需要返回块中的累加器:
/*
我想知道这个结果
计数=4/[1,1,3,3]
数组=[4,2,4]
*/
让计数=0;
让数组=[4,3,1,1,3,2,4]
数组=数组。减少((acc,cur)=>{
if(附件[附件长度-1]==当前){
附件pop()
计数+=2;
返回acc;
}否则{
返回acc.concat(当前);
}
}, []);
log({count,array})
您需要分配reduce
操作的结果,并在if
块中返回累加器,以便下一次迭代:
/*
我想知道这个结果
计数=4/[1,1,3,3]
数组=[4,2,4]
*/
让计数=0;
让数组=[4,3,1,1,3,2,4]
数组=数组。减少((acc,cur)=>{
if(附件[附件长度-1]==当前){
附件pop()
计数+=2;
返回acc;
}否则{
返回acc.concat(当前);
}
}, []);
log({count,array})代码>您忘记返回acc
let count=0;
让数组=[4,3,1,1,3,2,4]
让结果=数组。减少((acc,cur)=>{
if(附件[附件长度-1]==当前){
附件pop()
计数+=2
返回acc;
}
其他返回依据concat(当前)
}, [])
控制台日志(计数);
console.log(结果)
您忘记返回acc
let count=0;
让数组=[4,3,1,1,3,2,4]
让结果=数组。减少((acc,cur)=>{
if(附件[附件长度-1]==当前){
附件pop()
计数+=2
返回acc;
}
其他返回依据concat(当前)
}, [])
控制台日志(计数);
console.log(result)
通过只查看值和单个值的收集,您可以选择稍微不同的方法
最后的计数
从两个数组的长度中导出
const
数组=[4,3,1,1,3,2,4],
结果=数组。减少((acc,cur)=>{
如果(acc[acc.length-1]==cur)acc.pop();
其他附件推送(当前);
返回acc;
}, []),
count=array.length-result.length;
控制台日志(计数);
控制台日志(结果)代码>通过只查看值和单个值的收集,您可以选择稍微不同的方式
最后的计数
从两个数组的长度中导出
const
数组=[4,3,1,1,3,2,4],
结果=数组。减少((acc,cur)=>{
如果(acc[acc.length-1]==cur)acc.pop();
其他附件推送(当前);
返回acc;
}, []),
count=array.length-result.length;
控制台日志(计数);
控制台日志(结果)代码>天哪。。。我已经做了5个小时了。非常感谢你!不客气,但是。。。当同一个数字连续出现两倍以上时会发生什么?嗯。老实说,我从来没想过会这样。我刚刚解决了迭代(两次),所以我现在必须考虑一下…@kirk0201这个答案似乎解决了你的问题。你可以考虑接受它作为正确答案。我已经做了5个小时了。非常感谢你!不客气,但是。。。当同一个数字连续出现两倍以上时会发生什么?嗯。老实说,我从来没想过会这样。我刚刚解决了迭代(两次),所以我现在必须考虑一下…@kirk0201这个答案似乎解决了你的问题。你可以考虑接受它作为正确的答案。我只是通过创建一个条件来练习还原函数。但是我没有得到所需的值,所以我问了一个问题,[4,3,4,1,1,1,3]的返回值应该是什么?看看它是如何工作的,尤其是累加器。如果您没有从回调返回值(输入If分支时就是这种情况),那么下一次迭代您的累加器将是未定义的
。我不知道reduce最重要的部分。谢谢你,我会仔细阅读的!!隐马尔可夫模型。。。好吧,我想我的问题并不有趣。无论如何,你已经接受了答案。我只是通过创建一个条件来练习reduce函数。但是我没有得到所需的值,所以我问了一个问题,[4,3,4,1,1,1,3]的返回值应该是什么?看看它是如何工作的,尤其是累加器。如果您没有从回调返回值(输入If分支时就是这种情况),那么下一次迭代您的累加器将是未定义的
。我不知道reduce最重要的部分。谢谢你,我会仔细阅读的!!隐马尔可夫模型。。。好吧,我想我的问题并不有趣。不管怎样,你已经接受了答案。这是一种意想不到的方式。我会参考这个!!这是一种意想不到的方式。我会参考这个!!
/*
When consecutive values come into the array,
delete and count the number
I want to this result
count = 4 // [1, 1, 3, 3]
array = [4, 2, 4]
*/
let count = 0;
let array = [4, 3, 1, 1, 3, 2, 4]
array.reduce((acc, cur) => {
if (acc[acc.length - 1] === cur) {
acc.pop()
count += 2
}
// this part
else return acc.concat(cur)
}, [])