JavaScript 中的 map() 和 filter() 进行一起使用

发布于 2022-08-17 08:57:08 字数 1814 浏览 306 评论 0

JavaScript 的 Array#map()Array#filter() 函数一起使用时很棒,因为它们允许您 组合 简单的函数。

例如,这是一个基本用例 filter():从数值数组中过滤掉所有小于 100 的数字。

const nums = [25, 125, 75, 200];

function atLeast100(num) {
  return num >= 100;
}

nums.filter(atLeast100); // [125, 200]

此函数适用于数字数组。 但是,当您需要根据 price?你需要一个单独的 priceAtLeast100() 功能? 不,你可以使用 map() 改造 products 数组以适应什么 atLeast100 功能预期。

const products = [
  { name: 'T-Shirt', price: 25 },
  { name: 'Headphones', price: 125 },
  { name: 'Keyboard', price: 75 },
  { name: 'Monitor', price: 200 }
];

// Gets the number of products whose price is at least 100.
products.map(product => product.price).filter(atLeast100).length;

这是 组合 :通过组合 map()filter(),你可以重用简单的 atLeast100() 函数对稍微不同的输入进行操作。

过滤然后映射

前面的示例显示了您可能想要使用的原因 map() 其次是 filter(),在某些情况下您可能想要使用 filter() 其次是 map(),例如,您可能想在调用之前检查嵌套属性是否存在 map()

const orders = [
  { quantity: 2, item: { name: 'T-Shirt', price: 25 } },
  { quantity: 1, item: { name: 'Keyboard', price: 75 } },
  // Maybe there was a bug and a order with a null `item` ended up in the database!
  { quantity: 2, item: null }
];

const orderedItemNames = orders.
  filter(order => order.item != null).
  map(order => order.item.name);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

独行侠

暂无简介

文章
评论
24 人气
更多

推荐作者

jsonder

文章 0 评论 0

給妳壹絲溫柔

文章 0 评论 0

北笙凉宸

文章 0 评论 0

国产ˉ祖宗

文章 0 评论 0

月下客

文章 0 评论 0

梦行七里

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文