首页 > JavaScript > JavaScript 如何跳过 .map() 中的元素?

JavaScript 如何跳过 .map() 中的元素?

上一篇 下一篇

如何跳过 中的数组元素?.map

我的代码:

var sources = images.map(function (img) {
    if(img.src.split('.').pop() === "json"){ // if extension is .json
        return null; // skip
    }
    else{
        return img.src;
    }
});

这将返回:

["img.png", null, "img.png"]

分割线

网友回答:

先说说:.filter()

var sources = images.filter(function(img) {
  if (img.src.split('.').pop() === "json") {
    return false; // skip
  }
  return true;
}).map(function(img) { return img.src; });

如果您不想这样做,这并非不合理,因为它有一些成本,您可以使用更通用的.您通常可以用以下方式表示:.reduce().map().reduce

someArray.map(function(element) {
  return transform(element);
});

可以写成

someArray.reduce(function(result, element) {
  result.push(transform(element));
  return result;
}, []);

因此,如果您需要跳过元素,您可以使用以下方法轻松完成:.reduce()

var sources = images.reduce(function(result, img) {
  if (img.src.split('.').pop() !== "json") {
    result.push(img.src);
  }
  return result;
}, []);

在该版本中,第一个示例中的代码是回调的一部分。图像源仅在过滤器操作保留的情况下推送到结果数组上。.filter().reduce()

更新 — 这个问题引起了很多关注,我想补充以下澄清意见。作为一个概念,其目的是完全按照“映射”的含义:根据某些规则将一个值列表转换为另一个值列表。就像如果完全缺少几个城市,某个国家的纸质地图看起来很奇怪一样,从一个列表到另一个列表的映射只有在有 1 到 1 组结果值时才真正有意义。.map()

我并不是说从排除某些值的旧列表创建新列表没有意义。我只是想明确一个简单的意图,那就是创建一个与旧数组长度相同的新数组,仅使用由旧值的转换形成的值。.map()

分割线

网友回答:

自2019年以来,Array.prototype.flatMap是一个不错的选择。

images.flatMap(({src}) => src.endsWith('.json') ? [] : src);

来自 MDN:

flatMap可用作在地图期间添加和移除项目(修改项目
数)的一种方式。换句话说,它允许您将许多项目映射到
许多项目(通过单独处理每个输入项目),
而不是总是一对一的。从这个意义上说,它的工作方式与过滤器
相反。只需返回一个 1 元素数组以保留项目,返回一个多元素数组以添加项目,
或返回一个 0 元素数组以删除
项目。

分割线

网友回答:

我认为从数组中跳过某些元素的最简单方法是使用 filter() 方法。

通过使用此方法 (ES5) 和 ES6 语法,您可以在一行中编写代码,这将返回您想要的内容

let images = [{src: 'img.png'}, {src: 'j1.json'}, {src: 'img.png'}, {src: 'j2.json'}];

let sources = images.filter(img => img.src.slice(-4) != 'json').map(img => img.src);

console.log(sources);

模板简介:该模板名称为【JavaScript 如何跳过 .map() 中的元素?】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【JavaScript】栏目查找您需要的精美模板。

相关搜索
  • 下载密码 lanrenmb
  • 下载次数 309次
  • 使用软件 Sublime/Dreamweaver/HBuilder
  • 文件格式 编程语言
  • 文件大小 暂无信息
  • 上传时间 04-18
  • 作者 网友投稿
  • 肖像权 人物画像及字体仅供参考
栏目分类 更多 >
热门推荐 更多 >
微信素材 响应式 微信文章 单页式简历模板 微信公众平台 自适应 微信模板 企业网站 微信图片 html5
您可能会喜欢的其他模板