javascript - JS Map返回问题

标签 javascript loops ecmascript-6 array.prototype.map

我正在使用映射函数来浏览幻灯片数据,我只想返回前 5 个。但是,幻灯片返回前 5 张幻灯片,然后返回 2 张空幻灯片对象(因为有 7 张幻灯片。如何防止最后两张幻灯片返回?

const slides = slideData.slides.map((slide, index) => {
  if( index < 5 ) {
    return slide;
  }
});
console.log(slides);

此外,如果我做类似的事情......

let firstFive = [];
const slides = slideData.slides.map((slide, index) => {
  if( index < 5 ) {
    firstFive.push(slide)
  }
});

这工作正常,但是我收到一个 lint 错误,提示 Expected to return a value at the end of arrow function array-callback-return。这样做的标准方法是什么?

最佳答案

map 总是返回一个数组,其元素数与其输入数组相同。

相反,考虑使用 filter 仅在过滤后的输出中包含前 5 个元素:

slideData.slides.filter((slide, index) => {
  if( index < 5 ) {
    return true;
  }
});

或者,如果您有兴趣查找特定的连续元素运行,就像您在本例中所做的那样,只需使用 slice(n, m) 来获取元素 nm-1:

slideData.slice(0, 5)

关于javascript - JS Map返回问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46697356/

相关文章:

javascript - 如何设置 Angular 中两个输入字段的组合最大长度

c - 对代码示例分析的反馈(安全编码)

javascript - 咕噜声 : convert images to base64 and insert into html

javascript - 使用 javascript 读取/操作查询字符串参数的最简单方法是什么?

jQuery 方法(.css、.html 等)在内部不起作用

javascript - 使用 for 循环检查数组

javascript - 实例上未定义属性或方法 "key"- Vue/Laravel 应用程序

javascript - 为什么 babel 将导入的函数调用重写为 (0, fn)(...) ?

javascript - React 导入中的点表示法

javascript - 无法将动态数据添加到 jquery 列表中