我正在执行FreeCodeCamp任务,现在我遇到了Arrow函数的问题:我需要排序一个数组(其中的“筛选”函数做得很好--它排序),但是我的地图。功能不工作。我得到一个错误"((num > 0) && Number.isInteger(.)).map不是一个函数“
提前感谢
const realNumberArray = [4, 5.6, -9.8, 3.14, 42, 6, 8.34, -2];
const squareList = (arr) => {
"use strict";
const squaredIntegers = arr.filter((num) =>
(num > 0 && Number.isInteger(num)).map((num) => Math.pow(num,2) ))
return squaredIntegers;
};它应该返回一个数组,它只返回正整数的平方。
发布于 2019-09-11 04:42:18
将.map放在.filter完全完成之后:
const realNumberArray = [4, 5.6, -9.8, 3.14, 42, 6, 8.34, -2];
const squareList = (arr) => {
return arr
.filter(num => num > 0 && Number.isInteger(num))
.map(num => num ** 2)
};
console.log(squareList(realNumberArray));
发布于 2019-09-11 04:47:41
您可以在一起完成所有事情,而无需使用return或设置为另一个const:
const realNumberArray = [4, 5.6, -9.8, 3.14, 42, 6, 8.34, -2];
const squareList = (arr) => arr.filter(num => num > 0 &&
Number.isInteger(num)).map(num => Math.pow(num,2));发布于 2019-09-11 05:12:38
您只需使用reduce函数即可完成此操作。
const list = [4, 5.6, -9.8, 3.14, 42, 6, 8.34, -2];
const result = list.reduce((acc, val) => {
if (Number.isInteger(val) && val > 0) {acc.push(val*val)};
return acc;
}, []);
console.log(result);
https://stackoverflow.com/questions/57882240
复制相似问题