首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编写高阶Arrow函数

编写高阶Arrow函数
EN

Stack Overflow用户
提问于 2019-09-11 04:39:56
回答 5查看 202关注 0票数 0

我正在执行FreeCodeCamp任务,现在我遇到了Arrow函数的问题:我需要排序一个数组(其中的“筛选”函数做得很好--它排序),但是我的地图。功能不工作。我得到一个错误"((num > 0) && Number.isInteger(.)).map不是一个函数“

提前感谢

代码语言:javascript
复制
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;
};

它应该返回一个数组,它只返回正整数的平方。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2019-09-11 04:42:18

.map放在.filter完全完成之后:

代码语言:javascript
复制
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));

票数 3
EN

Stack Overflow用户

发布于 2019-09-11 04:47:41

您可以在一起完成所有事情,而无需使用return或设置为另一个const:

代码语言:javascript
复制
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));
票数 1
EN

Stack Overflow用户

发布于 2019-09-11 05:12:38

您只需使用reduce函数即可完成此操作。

代码语言:javascript
复制
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);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57882240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档