//数组中只有数字,直到n次
function deleteNth(arr,n){
// ...
function count(arr1, num){
console.log('arr1', arr1)
return arr1.reduce((acc, val) => (val === num) ? ++acc : acc, 0);
}
// return arr.reduce((acc1, val1) => {
// if (count(acc1, val1) < n){
// acc1.push(val1);
// }
// else{
// acc1;
// }
// return acc1;
// }, []);
return arr.reduce((acc1, val1) => ((count(acc1, val1) < n) ? acc1.push(val1) : acc1), []);
}
console.log(deleteNth([20,37,20,21], 1)); // [20,37,21]`
当我运行这段代码时,我得到了错误。TypeError:arr1.reduce不是函数
然而,当我使用注解代码运行时,它运行得很好。在reduce函数中使用多行代码,它运行得很好。
在单行代码中,当处理第一个数组元素时,变量acc 1的值为1。2由于这个原因,我出错了。3有人能告诉我我犯了什么错误吗?
console.log(deleteNth([20,37,20,21],1));// [20,37,21]
1条答案
按热度按时间rryofs0p1#
它不起作用,因为你应该在
reduce
回调中返回数组,但三进制的一个分支返回push
的结果,这是数组的新长度。只有当条件为真时,才可以对
push
使用逻辑and运算符,并使用逗号运算符始终在末尾返回累加器数组。