如何解决javascript中的reduce方法未定义
如何使用reduce方法解决这个问题?我不断变得不确定。我试图只打印出循环时较大的数字。所以例如 [1,4,2,9,1,12] 会给我 1,12 的打印输出 - 这就是我得到的......而且我一直为累加器定义????
**
function main(array){
let myNum;
let answer=[];
outPut = array.reduce((accumulator,element) => {
const num = accumulator;
myNum= num > element? answer.push(num):
answer.push(element);
},0);
console.log(outPut);
}**
main([20,3,22,15,6,1]);
解决方法
您需要返回 reduce()
中的累加器。
更简单的版本是在累加器中检查索引为零或值大于先前的值,以确定是否添加当前值
const data = [ 1,4,2,9,1,12];
const res = data.reduce((a,c,i) => {
return (!i || c > a[a.length-1]) ? a.concat(c) : a;
},[])
console.log(res)
那是因为 reduce()
与返回数字的回调一起使用。你没有返回任何东西。
但主要问题是您将项目推入 answer
。但是随后您尝试记录未初始化的 outPut
,它可能具有的唯一值来自错误使用的 reduce()
。
试试这个:
function main(array){
let myNum;
let answer=[];
array.reduce((accumulator,element) => {
const num = accumulator;
let biggerOne;
if(num > element) {
biggerOne = num;
} else {
biggerOne = element;
}
answer.push(biggerOne);
return biggerOne;
},0);
console.log(answer);
}**
main([20,3,22,15,6,1]);
,
如果您希望 [1,12]
返回 [1,12]
,array.reduce 不是可行的方法。
试试
function sortArray(array) {
const sortedArray = array
.sort((a,b) => a - b) //sort by ascending
.filter((e,index) => array.indexOf(e) == index) //remove duplicates
console.log(sortedArray);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。